我有2个.h文件(带.cpp文件),其代码如下:
富:
#ifndef INCLUDE_FOO_H_
#define INCLUDE_FOO_H_
class Foo
{
public:
virtual ~Foo();
virtual void workWithBar(Bar* bar);
};
#endif /* INCLUDE_FOO_H_ */
栏:
#ifndef INCLUDE_BAR_H_
#define INCLUDE_BAR_H_
class Bar
{
public:
virtual ~Bar();
virtual void letsWorkWithFoo(Foo* itsFoo);
};
class Bar2 : public Bar
{
public:
virtual void letsWorkWithFoo(Foo* itsFoo);
};
#endif /* INCLUDE_BAR_H_ */
cpp文件只是简单的文件,带有“空”impl。那段代码。我正在使用最新的Eclipse,以及我能找到的最新MinGW。两个cpp文件都包含和。如果我将所有类放在一起,它将编译并正常工作。我也在main.cpp中使用Foo.h,它的工作也很完美。
我确实尝试将包含添加到Foo& Bar,我确实尝试过使用diffrent std(-std = c ++ 11)。我没有在.h文件中的任何地方使用“使用命名空间”。
P.S。如果你没有从标题中取消它 -
C:\PathWasHere\include/Bar.h:35:21: error: 'Foo' has not been declared
virtual void workWithFoo(Foo *Foo);
^
C:\PathWasHere\include/Bar.h:86:21: error: 'Foo' has not been declared
virtual void workWithFoo(Foo *Foo);
^
编辑:忘了说,我也在和Foo一起工作。