为什么这不起作用?
我在我的代码中使用友好函数,但是有一个错误,所以我找不到它。请帮忙。
#include<iostream>
#include<cstdlib>
using namespace std;
class Circle{
private:
int x;
public:
Circle(int x1=5){
x=x1;
friend std:ostream & operator<<(const Circle & c, std::ostream & os)
{
return os<<c.x
}
}
};
int main()
{
Circle s;
cout<< s;
system("pause");
return 0;
}
答案 0 :(得分:3)
四个问题:
您已在构造函数中定义了friend函数。把它移到外面,这是它自己的功能。
将std:ostream
替换为std::ostream
交换参数的顺序。
在return os<<c.x
最终结果:
class Circle{
private:
int x;
public:
Circle(int x1=5){
x=x1;
}
friend std::ostream & operator<<(std::ostream & os, const Circle & c)
{
return os<<c.x;
}
};
答案 1 :(得分:1)
friend std:ostream & operator<<(const Circle & c, std::ostream & os)
{
return os<<c.x
}
你应该在构造函数之外声明这个函数。
答案 2 :(得分:1)
友元函数需要在与构造函数相同的级别声明,而不是在其中。