Comment accéder aux fonctions membres d’une classe dans une autre classe?

Je ne peux pas accéder à une fonction membre d’une classe dans une autre, bien que je puisse y accéder très bien dans main (). J’ai essayé de changer les choses, mais je suis incapable de comprendre ce que je fais mal. Toute aide serait appréciée.

Voici la ligne qui génère l’erreur:

cout << "\n\nRetrieve key from inside Envelope class: " << e.getData() << "\n\n"; 

Et voici le code:

 class Record{ private: ssortingng key; public: Record(){ key = ""; } Record(ssortingng input){ key = input; } ssortingng getData(){ return key; } Record operator= (ssortingng input) { key = input; } }; template class Envelope{ private: recClass * data; int size; public: Envelope(int inputSize){ data = new recClass[inputSize]; size = 0; } ~Envelope(){ delete[] data; } void insert(const recClass& e){ data[size] = e; cout << "\n\nRetrieve key from inside Envelope class: " << e.getData() << "\n\n"; ++size; } string getRecordData(int index){ return data[index].getData(); } }; int main(){ Record newRecord("test"); cout << "\n\nRetrieve key directly from Record class: " << newRecord.getData() << "\n\n"; Envelope * newEnvelope = new Envelope(5); newEnvelope->insert(newRecord); cout << "\n\nRetrieve key through Envelope class: " <getRecordData(0) << "\n\n"; delete newEnvelope; cout << "\n\n"; return 0; } 

Vous void insert(const recClass& e){ e comme référence constante. void insert(const recClass& e){
Et ensuite, vous appelez une méthode ( getData() ) non déclarée constante.

Vous pouvez résoudre ce problème en réécrivant getData() comme ceci:

 ssortingng getData() const{ return key; } 

Vous devez déclarer getData() tant que const afin qu’il puisse être appelé à partir d’un contexte const . Votre fonction d’ insert prend un const recClass& e afin que vous souhaitiez le faire dans Record :

 ssortingng getData() const { return key; }