C++ のフレンド関数で問題が発生していますが、それはプリプロセッサ ディレクティブと #include で発生した問題の兆候であると考えています。
これは私がやっていた愚かな例です。5 つのファイル: bobby.h、bobby.cpp、billy.h、billy.cpp、および main.cpp。Billy には、ReceiveMoney という保護された機能があります。Bobby には、Billy の ReceiveMoney を呼び出す bank という関数があります。つまり、ボビーが銀行に行くたびに、彼はビリーとお金を分割します。
ビリー.h
#ifndef BILLY_H
#define BILLY_H
#include "bobby.h"
class Billy
{
friend void Bobby::Bank(int, Billy &);
public:
Billy();
protected:
void ReceiveMoney(int inc);
private:
int money;
};
#endif
ビリー.cpp
#include "billy.h"
Billy::Billy()
{
money = 0;
}
void Billy::ReceiveMoney(int inc)
{
money+=inc;
}
ボビー.h
#ifndef BOBBY_H
#define BOBBY_H
#include "billy.h"
class Bobby
{
public:
Bobby();
void Bank(int amount, Billy & b);
protected:
int money;
};
#endif
ボビー.cpp
#include "bobby.h"
Bobby::Bobby()
{
money = 0;
}
void Bobby::Bank(int amount, Billy & b)
{
b.ReceiveMoney(amount/2);
}
main.cpp
#include "billy.h"
#include "bobby.h"
int main()
{
Bobby bo;
Billy bi;
bo.Bank(150, bi);
return 0;
}
多数のエラーが発生します。通常、エラー C2653: 'Bobby' : is not a class or namespace name または error C2653: 'Billy' : is not a class or namespace name
私はVS0の空のコンソールプロジェクトでこれをやっています