は、私はこのエラーを取得する:C++シンプルな循環参照と前方宣言の問題
error C3646: 'bar': unknown override specifier
2015のVisual Studioで、この非常に単純なC++コードをコンパイルしようとしている:
main.cppに:
#include "Foo.h"
int main()
{
return 0;
}
foo.h:
#pragma once
#include "Bar.h"
class Foo
{
public:
Foo();
Bar bar;
};
Bar.h:
#pragma once
#include "Foo.h"
class Bar
{
public:
Bar();
};
私はそれぞれの.hが他方を含み、そしてこの溶液を前方宣言を使用する必要がありますので、循環参照があり得るが、彼らはいないようです誰かが理由を説明することができますか?私はここで同様の問題を発見し、ソリューションは常に同じです、私は何かが不足していると思う:)
あなたの前方宣言はどこですか? – nwp
'Foo'の前に' Bar'という前方宣言を使いたい場合、コンパイラはその時点で 'Bar'のサイズを知っている必要があるので、' Bar bar; 'はエラーですが、' Bar *バー。 –