これは非常に厄介な間違いですが、ここで何が起こっているのかわかりません。
単純な例はたくさんありますが、なぜこれが機能しないのかわかりません(これは多かれ少なかれ例の1つでしたが、違いはわかりません)。
非常に単純な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:不正な間接参照。
ありがとう。