我在使用C++编写朋友函数时遇到了一些困难,但我怀疑这更像是我对预处理器指令和#include有问题的症状。朋友功能问题
这是我正在做的一个愚蠢的例子。五个文件:bobby.h,bobby.cpp,billy.h,billy.cpp和main.cpp。比利有一个名为ReceiveMoney的保护功能。博比有一个叫做银行的职能,称比利的接收币。即每次博比去银行时,他都会把钱和比利分开。
billy.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
billy.cpp
#include "billy.h"
Billy::Billy()
{
money = 0;
}
void Billy::ReceiveMoney(int inc)
{
money+=inc;
}
bobby.h
#ifndef BOBBY_H
#define BOBBY_H
#include "billy.h"
class Bobby
{
public:
Bobby();
void Bank(int amount, Billy & b);
protected:
int money;
};
#endif
bobby.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:“博比”:不是类或命名空间名称 或 错误C2653:“比利”:是不是一个类或命名空间名称
我在VS0
嗯,我并不是全新的。我确实尝试了前向声明。行b.ReceiveMoney(金额/ 2);在bobby.cpp中导致使用未定义类型的错误'Billy' – Tim
@Tim:在'bobby.cpp'中包含'billy.h'。 –
谢谢你,你一直很有帮助。 – Tim