我在C ++ / JUCE项目中有3个类:KeyboardGUI,Chord和Audio。
KeyboardGUI接收一个名为rootNote的int,需要将其提供给Chord。
Chord需要将此值提供给Audio。
我正在尝试使用getter / setter来实现这一点,但是我不确定使用它们的方式:ie:我是否从键盘GUI设置和弦,并从Chord设置音频,或者我是否从keyboardGUI到和弦,从和弦到音频。
据我所知,我需要在KeyboardGUI或Audio中创建一个Chord实例,并使用指针从另一个类访问此实例,但我无法弄清楚如何实现它。
我应该在哪个方向进行/设置?我应该在哪里使用实例或指针?
从KeyboardGUI设置为和弦的功能
void KeyboardGUI::handleNoteOn (MidiKeyboardState* source, int midiChannel, int midiNoteNumber, float velocity)
{
//IS THIS CORRECT?
chord.setRootNote(midiNoteNumber);
}
Chord.CPP中的Getter / Setter函数
void Chord::setRootNote(int newNote)
{
rootNote = newNote;
}
int Chord::getRootNote()
{
return rootNote;
};
这里我需要访问rootNote并将其放在一个新变量
中 void Audio::playChord()
{
//get root note from chord - use pointer??;
}
我应该在Audio类中使用指针吗?
答案 0 :(得分:0)
以下是您如何做到这一点的示例。我不确定哪个类会使用哪个层次结构,所以我只是认为Audio是顶级狗,它随意使用Class Chord。使用对您最有用的东西。
class Audio
{
public:
Chord * myChordPTR; //option 1 variable myChordPTR of type pointer to Chord
Chord myChord; //option 2 actual chord object stored on the stack
Audio();
~Audio();
void playChord();
}
Audio::Audio()
{
myChordPTR = new Chord(); //instantiates a Chord object on the heap
}
Audio::~Audio()
{
delete myChordTRP; //frees the memory of the object that was on the heap
}
void Audio::playChord()
{
int rootNode = myChordPTR->getRootNode();
int otherRootNode = myChord.getRootNode();
}
了解myChordPTR
是一个指针,允许Audio
类使用Chord
类型的对象?
这里的要点是当一个类试图使用另一个类的方法时,它需要某种方式来引用该类的特定对象(除非它只使用静态方法)。
请注意,箭头操作符->
用于访问指针的成员,而点运算符.
用于访问对象本身的成员。
我没有包含KeyboardGUI
课程以努力保持这个答案的最小化,但我认为使用我提供的内容应该能够弄明白。