【发布时间】:2015-08-08 21:29:52
【问题描述】:
我收到了
不允许不完整的类型
错误。显然我不明白前向声明是如何工作的。我知道我不能在头文件中使用方法,但是在实现中呢?
代码如下:
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() 是导致错误的原因。但是它在实现文件中。这也不允许吗?
【问题讨论】:
标签: c++