【发布时间】:2016-03-12 14:30:57
【问题描述】:
我正在处理我试图定义两个相互依赖的类的情况。这是我正在尝试做的一个简化示例。
class a{
public:
int ia;
int printb(b in){
return in.ib;
}
};
class b{
public:
int ib;
int printb(a in){
return in.ia;
}
};
这给了我未定义的 b 类错误。我试过了
class b;
class a{
public:
int ia;
int printb(b in){
return in.ib;
}
};
class b{
public:
int ib;
int printb(a in){
return in.ia;
}
};
但这并不能解决问题。有什么想法吗?
【问题讨论】:
-
想一想:不知道
b的定义,编译器怎么知道return in.ib;是什么意思?您必须先定义b,然后再定义a::printb。 -
所以只在类中声明子程序,以后再定义?
-
是的。这可能是一个骗局,但我也不知道如何搜索。 ://
-
我相信它叫circular dependency。一般来说,它只是意味着您的程序设计中存在缺陷。
-
@BaummitAugen 没有看到公开声明
标签: c++ class forward-declaration