c++友元类初始化数据要用到另外两个类的私有数据

最近在写代码,碰到一个问题,就是我定义的一个类,这个类的初始数据想要用到另外两个类的私有数据,但是提示inaccessible,已经在另外两个类中规定了本类为友元类。详情见图,tPoint就是我定义的一个类,task1和p1是另外两个类的对象。还有一个问题,友元类是只能让成员函数去访问其他类的数据?不能够让其他类的数据相加减作为本类的初始数据?![![图片说明](https://img-ask.csdn.net/upload/201703/06/1488788644_805797.png)图片说明](https://img-ask.csdn.net/upload/201703/06/1488788626_302830.png)图片说明

图片说明

你的 tPoint P11中间应该是.吧。
而且 tPoint 应该是变量,怎么是“类”呢?

class A
{
private:
    int a;
    friend class C;
};

class B
{
private:
    int b;
    friend class C;
};

class C
{
public:
    C(A a, B b ) { c = a.a + b.b;} ; // OK
    friend class A;
    friend class B;
private:
    int c;
};
C t1(a.a + b.b ); // fail


友元类,只是让这个类中的函数可以访问这个类的私有变量。

初始化参数列表的加减操作如果也需要访问私有变量,那这些操作也需要设置为类的友元函数。

可以通过一个方法返回那个私有成员,,,例如这样:

#include

using namespace std;

class B;
class A
{
friend class B;
private:
int a;
int geta() //私有的
{
return a;
}
public:
A()
{
a=10;
}

};
class B
{
A aa;
public:
int getA()
{
return aa.geta(); //调用类A的私有方法
}
};
int main()
{
B b;
cout<<b.getA()<<endl;
return 0;
}

 class A
{
public:
    friend class C;
private:
    int a;

};

class B
{
public:
    friend class C;
private:
    int b;

};

class C
{
public:
    C(int a) { c = a ; }
    C(A a, B b ) { c = a.a + b.b;} // OK
private:
    int c;
};

A a;
B b;
C t1(a.a + b.b ); // fail