这是一个非常愚蠢的错误,但我不知道这里发生了什么。
有很多 pimpl 示例,但我不明白为什么这不起作用(这或多或少是示例之一,但我看不出区别)。
我有一个非常简单的 Pimpl 示例,但它不起作用。
// Foo.hpp
#include <boost/scoped_ptr.hpp>
class Foo
{
struct Bar;
//boost::scoped_ptr<Bar> pImpl;
Bar* pImpl;
public:
Foo();
~Foo() {}
int returnValue();
private:
};
和
// Foo.cpp
#include "foo.hpp"
struct Foo::Bar
{
Bar() {}
~Bar() {}
int value;
};
Foo::Foo() : pImpl(new Bar())
{
pImpl->value = 7;
}
int Foo::returnValue() {
return *pImpl->value;
}
编译这个给了我错误。C2100:非法间接。
谢谢。