将班级的方法作为朋友

时间:2014-10-16 00:35:27

标签: c++ friend

我想把一个班级的方法作为朋友,而不是让全班同学。 这就是我所拥有的

class tar;
class foo
{
private:
    int foo_int;
public:
    foo(){std::cout << "Constructor\n";}
    friend void tar::anotherMethod();
};

class tar
{
    public:
    void anotherMethod()
    {
        foo f;      
        f.foo_int = 13;
        std::cout << f.foo_int;
    }

};

这些是我得到的错误

error C2027: use of undefined type 'tar'
error C2248: 'foo::foo_int' : cannot access private member declared in class 'foo'  

关于我可能做错什么的任何建议?

1 个答案:

答案 0 :(得分:0)

在编译代码时,您可以重新排列声明和定义:

#include <iostream>

class tar
{
    public:
    void anotherMethod();
};

class foo
{
private:
    int foo_int;
public:
    foo(){std::cout << "Constructor\n";}
    friend void tar::anotherMethod();
};

void tar::anotherMethod()
{
    foo f;      
    f.foo_int = 13;
    std::cout << f.foo_int;
}