我遇到了
不允许使用不完整的类型
错误。显然,我不懂得如何使用前置声明。我知道不能在头文件中使用方法,但在实现中可以吗?
这是代码:
Foo.h:
#pragma once
class Bar;
class Foo {
const Bar &mBar;
public:
Foo(const Bar &bar);
int getVal() const;
};
Foo.cpp:
#include "Foo.h"
Foo::Foo(const Bar &bar) : mBar(bar) {}
int Foo::getVal() const {
return mBar.getVal();
}
Bar.h:
#pragma once
class Bar {
public:
Bar();
int getVal();
};
Bar.cpp:
#include "Bar.h"
Bar::Bar() {}
int Bar::getVal() {
return 5;
}
mBar.getVal()是导致错误的原因。然而,它在实现文件中。这也不允许吗?