由于我的最后一个问题中包含太多代码,因此我尝试制作最简单的示例来说明我正在尝试做的事情。举个例子,..
#include <iostream>
using namespace std;
class String
{
public:
private:
};
class ClassTwo
{
public:
int memberVariable;
private:
};
class ClassOne
{
public:
ClassOne (ClassTwo&, String&);
~ClassOne();
private:
ClassTwo& classTwoReference;
String& stringReference;
};
ClassOne::ClassOne (ClassTwo& two, String& string)
: classTwoReference (two), stringReference (string)
{
two.memberVariable = 3;
}
ClassOne::~ClassOne()
{
}
int main()
{
String stringObject;
ClassTwo classTwoObject;
ClassOne classOneObject (classTwoObject, stringObject);
}
在 JUCE(我用来编写 VST 插件的 API)中,有一个字符串类,JUCE 将其命名为“String”。我不确定构造函数到底做了什么,但你可以使用类似的东西来创建一个 String 对象。
String newString("string");
在我的例子中,ClassTwo 是 AudioProcessor 类,它有一个公共成员变量,我可以像这样从 ClassOne 访问它。
two.memberVariable = 3;
就我而言,ClassOne 是我在 GUI 中使用的自定义组件(我将其命名为 PixelSlider)。它使用滑块侦听器来检查滑块的状态并修改 ClassTwo(AudioProcessor) 中的成员变量。我可以使用上面的方法很好地做到这一点,但问题是我想根据需要创建尽可能多的 ClassOne(PixelSlider) 对象。我想向他们传递一个 String 对象,告诉他们要修改 ClassTwo(AudioProcessor) 的哪个成员变量。从逻辑上讲,这可以通过传递对 String 对象的引用来完成,该对象的字符串值与 ClassTwo 成员变量的名称相同。像这样,...
ClassOne::ClassOne (ClassTwo& two, String& string)
: classTwoReference (two), stringReference (string)
{
two.(string) = 3;
}
这在 JUCE 中不起作用,但是任何人都可以告诉我一种方法来完成这项工作,而不必创建一堆几乎与 ClassOne(PixelSlider) 一样修改不同 ClassTwo(AudioProcessor) 成员变量的不同类?