这是一个非常重复的问题,也在 StackOverflow 中,但即使尝试不同的答案,我也无法解决我的问题。所以,我有一些课程:
主.cpp:
#include "foo.h"
#include "bar.h"
...
富.h:
#include "bar.h"
class foo {
foo();
bar& bind(bar &b);
gru& bind(gru &g);
};
酒吧.h:
#include "foo.h"
class bar {
bar();
foo& bind(foo &f);
gru& bind(gru &g);
};
显然,我有一个循环依赖。所以我得到了臭名昭著的错误'bar' does not name a type
。在这种情况下,我添加class bar;
到foo
声明并删除#include
. 当我这样做时,我得到:invalid use of incomplete type ‘struct bar'
.
我尝试了一些不同的方式,也添加class foo;
到 bar,但我总是有某种错误。在最后一种情况下,我得到:
bar.cpp:48:11: error: prototype for ‘foo& bar::bind(bar::foo&)’ does not match any in class ‘bar’
bar.h:55:12: error: candidates are: gru& bar::bind(gru&)
bar.h:54:13: error: bar::foo& bar::bind(bar::foo&)
另外,我从来没有抱怨过gru
。作为附加信息,bar
在main
我添加foo
.
有什么有用的想法吗?非常感谢 :)