一个关于友元函数的问题

#include
using namespace std;
class Car
{
int size;
public:
void getsize(int j) { size = j; }
friend int leisure(int time,const Car& aobj,const Boat& bobj);
};
class Boat
{
int size;
public:
void setsize(int j) { size = j; }
friend int leisure(int time, const Car& aobj, const Boat& bobj);
};
int leisure(int time, const Car& aobj, const Boat& bobj)
{
int t = time*bobj.size;
return t;
}
int main()
{
Car c;
c.getsize(2);
Boat b;
b.setsize(3);
cout << leisure(5, c, b);
}

c:\school learning\vshomework\consoleapplication2\consoleapplication2\源.cpp(8): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\school learning\vshomework\consoleapplication2\consoleapplication2\源.cpp(8): error C2143: 语法错误: 缺少“,”(在“&”的前面)

4个回答

class Car
{
int size;
public:
void getsize(int j) { size = j; }
friend int leisure(int time,const Car& aobj,**const Boat&** bobj);//此时未声明Boat类
};
交换两个类定义的顺序即可

Boat的申明要放在前面,否则friend int leisure(int time, const Car& aobj, const Boat& bobj);这里boat找不到类型。

class boat{} 放到 class car{} 前面。

class boat{} 放到 class car{} 前面

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐