フレンド機能の作業中にいくつかの問題が発生しました。パラメーターに 2 つの異なるクラスを使用するフレンド関数を使用したいと考えています。コードのサンプルは次のとおりです。
ObjectA.h:
#ifndef OBJECTA_H_
#define OBJECTA_H_
#include "ObjectB.h"
#include <iostream>
using namespace std;
class ObjectA {
private:
friend void friendFunction(ObjectA &,ObjectB &);
public:
ObjectA();
virtual ~ObjectA();
};
#endif /* OBJECTA_H_ */
ObjectB.h:
#ifndef OBJECTB_H_
#define OBJECTB_H_
#include <iostream>
using namespace std;
#include "ObjectA.h"
class ObjectB {
private:
friend void friendFunction(ObjectA &, ObjectB &);
public:
ObjectB();
virtual ~ObjectB();
};
#endif /* OBJECTB_H_ */
ObjectA と ObjectB の両方の .cpp ファイルが空です (空のコンストラクターとデストラクター)。メインの .cpp ファイルは次のとおりです。
#include <iostream>
using namespace std;
#include "ObjectA.h"
#include "ObjectB.h"
void friendFunction(ObjectA &objA, ObjectB &objB){
cout << "HIIIIIIIIIII";
}
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
これにより、次のエラーが表示されます。
'ObjectA' has not been declared
そして、このエラーは ObjectB.h の次の行を指しています:
friend void friendFunction(ObjectA &, ObjectB &);
ご覧のとおり、ObjectA.h ファイルは ObjectB.h ファイルに含まれています。だから私は私のエラーがどこから来たのか分かりません。
多分私は間違った方法で友人機能を使用していますか?
君たちありがとう !