使用Getters/setter在类之间传递值

Passing values between classes using getters/setters

本文关键字:之间 Getters setter 使用      更新时间:2023-10-16

我在C /Juce项目中有3个类:键盘盖,和弦和音频。

键盘gui接收一个称为rootnote的int,需要将其提供给和弦。

和弦需要给音频。

我正在尝试使用getters/setter来实现这一目标,但是我不确定要使用哪种方式:和弦,从和弦到音频。

从我可以看出的情况下,我需要在键盘和音频中创建1个和弦的实例,并使用指针从其他类中访问此实例,但是我不知道如何实现此功能。

我应该得到哪种方式/设置?我应该在哪里使用实例或指针?

功能从键盘盖设置为和弦

            void KeyboardGUI::handleNoteOn (MidiKeyboardState* source, int midiChannel, int midiNoteNumber, float velocity)
            {
            //IS THIS CORRECT?
            chord.setRootNote(midiNoteNumber);
            }

getter/setter函数Chord.cpp

            void Chord::setRootNote(int newNote)
            {
                rootNote = newNote;
            }
            int Chord::getRootNote()
            {
                return rootNote;
            };

在这里,我需要访问rootnote并将其放在新变量

 void Audio::playChord()
            {
                //get root note from chord - use pointer??;
            }

我应该在音频类中使用指针吗?

这是您如何做的示例。我不确定哪个类使用哪个类别的层次结构,所以我只是认为音频是顶级狗,它随意使用类和弦。使用对您最有用的东西。

音频.h

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.cpp

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课程,以保持这个答案最小,但我认为使用我提供的内容,您应该能够弄清楚它。