基类中的C ++数据块

问题描述 投票:0回答:1

我正在尝试编写模块化音频处理应用程序。模块化的意思是,我有'模块'(我称之为节点),它有输入和输出(有几种不同的类型,它们是彩色编码的,例如绿色表示音频输出,蓝色表示单个数字输出等)。我还尝试将UI和程序逻辑分开。

为了实现这个系统,我编写了从我的自定义'datablock'类派生的类,它们本质上只是不同的数据类型存储,所以我有一个'IntDataBlock',我有'AudioDataBlock'等等。所有这些类都有相同的变量('data'),但具有不同的数据类型。例如,IntDataBlock只有一个int类型'data',但AudioDataBlock例如有一个浮点列表作为'data'。

另外,我编写了一个类'connection',它将节点的输出与另一个节点的输入连接起来。 'connection'将两个节点指针作为构造函数参数,因此它知道要连接的节点。现在你必须知道,每个节点都有'datablock'派生对象作为输入/输出值存储。

'connection'具有将其附加到两个数据块(一个输出和一个输入)的功能,因此只要节点1处理它的数据并具有输出数据,它就会更新输出数据块,然后'connection'类应该直接作为一个桥,将数据从节点1的输出传输到节点2的输入。但我有一个问题:因为我不能将数据块的'data'变量放在父类'dataclass'中(因为每个派生类都是一种不同类型的'数据'),我写不出来:

void NodeConnection::establishConnection()
{
    node2.inputDatablock.data = node1.outputDataBlock.data;
}

...因为'data'不在父类'datablock'中,所以从技术上讲,并非每个'数据块'实际上都必须有一个变量'data'。

你知道如何解决这个问题吗?如果有人知道更好的实现这种联系的方式,那么我也会感激。谢谢!

c++ audio modular-design
1个回答
0
投票

好的,我解决了这个问题。我没有只传输​​可变数据,而是交换整个数据块,我发现它有一些优点,因为数据块中还有更多变量也需要复制。

© www.soinside.com 2019 - 2024. All rights reserved.