朋友功能C ++

时间:2013-12-07 18:44:22

标签: c++ class

为什么这不起作用?

我在我的代码中使用友好函数,但是有一个错误,所以我找不到它。请帮忙。

#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;
}

3 个答案:

答案 0 :(得分:3)

四个问题:

  1. 您已在构造函数中定义了friend函数。把它移到外面,这是它自己的功能。

  2. std:ostream替换为std::ostream

  3. 交换参数的顺序。

  4. return os<<c.x

  5. 之后添加分号

    最终结果:

    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)

友元函数需要在与构造函数相同的级别声明,而不是在其中。