【发布时间】:2013-12-25 12:14:50
【问题描述】:
我想定义两个类,A 和 B。A 有一个数据成员,它是 B 类对象并且在类内初始化。 A 也有一个方法来检索此 B 类型数据成员中的值,并且此方法将在 B 中声明为友元方法。这是我的代码:
class A{
public:
int getBValue();
private:
B b=B(1);
};
class B{
public:
friend int A::getBValue();
B(int i):value(i){}
private:
int value;
};
int A::getBValue(){
return b.value;
}
不出所料,编译失败是因为 A 类定义中的类型 B 未知。我曾尝试在源代码中交换 A 和 B 的定义,结果更糟。有没有办法解决 A 和 B 之间的交叉引用问题?
【问题讨论】:
-
先声明B的时候报什么错?如果您在切换订单时仅将“A”类设为好友,会发生什么情况?无论如何,为什么不使用公共吸气剂?
-
-
@LaszloPapp 两个错误。一个是“使用未声明的标识符'A'”,另一个是“'value'是'B'的私有成员”。
标签: c++ friend-function