我正在尝试编写模块化音频处理应用程序。模块化的意思是,我有'模块'(我称之为节点),它有输入和输出(有几种不同的类型,它们是彩色编码的,例如绿色表示音频输出,蓝色表示单个数字输出等)。我还尝试将UI和程序逻辑分开。
为了实现这个系统,我编写了从我的自定义'datablock'类派生的类,它们本质上只是不同的数据类型存储,所以我有'IntDataBlock',我有'AudioDataBlock'等等。所有这些类具有相同的变量('data'),但具有不同的数据类型。例如,IntDataBlock只有一个int类型'data',但AudioDataBlock例如有一个浮点列表作为'data'。
另外,我编写了一个类'connection',它将节点的输出与另一个节点的输入连接起来。 'connection'将两个节点指针作为构造函数参数,因此它知道要连接的节点。现在你必须知道,每个节点都有'datablock'派生对象作为输入/输出值存储。
'connection'具有将其附加到两个数据块(一个输出和一个输入)的功能,因此只要节点1处理它的数据并具有输出数据,它就会更新输出数据块,然后“连接”类应该直接作为桥梁工作,将数据从节点1的输出传输到节点2的输入。但我有一个问题: 由于我不能将数据块的'data'变量放在父类'dataclass'中(因为每个派生类作为'data'的不同类型),我不能写:
void NodeConnection::establishConnection()
{
node2.inputDatablock.data = node1.outputDataBlock.data;
}
...因为'data'不在父类'datablock'中,所以从技术上讲并非每个'datablock'实际上都必须有一个变量'data'。
你知道如何解决这个问题吗?如果有人知道更好的实现这种联系的方式,那么我也会感激。 谢谢!
答案 0 :(得分:0)