En C++, j'ai:délégué en C++ (ou quelque chose comme ça)
//Base1.h
#ifndef BASE1_H
#define BASE1_H
#include <iostream>
#include <string>
#include "Base2.h"
using namespace std;
class Base1{
private:
string name;
public:
Base1(string _name);
void printSomething();
string getName();
};
#endif
En Base1.cpp
je mets en œuvre constructeur Base1(string _name)
et string getName()
comme d'habitude, et le printSomething()
:
void Base1::printSomething(){
Base2 b2;
// how to pass a parameter in the following code?
b2.printBase1();
}
// This is Base2.h
#ifndef BASE2_H
#define BASE2_H
#include <iostream>
#include <string>
#include "Base1.h"
using namespace std;
class Base2{
public:
Base2();
void printBase1(Base1 b);
};
#endif
Et Base2()
constructeur Je mets en œuvre comme d'habitude, c'est mon printBase1(Base1 b)
:
void Base2::printBase1(Base1 b){
cout << b.getName();
}
Donc, à la fin, je veux utiliser printSomething()
dans la classe Base1
, mais je ne sais pas comment passer le paramètre au b2.printBase1()
en printSomething()
comme ci-dessus dans mon code. Y a-t-il quelque chose comme b2.printBase1(this)
en C++? Si non, pouvez-vous me donner une suggestion?
Si je supprime 'Base2.h', comment puis-je créer' Base2 b2; '' dans printSomething() '? J'ai une erreur :(! –
@Kingfisher vous l'incluez dans le fichier cpp, pas l'en-tête –
Merci, mais je ne change pas 'void printBase1 (Base1 b)', je reçois toujours un bon résultat! Suis-je chanceux ? –