コンパイル時間を最小限に抑えるために、可能な限り前方宣言を使用しようとしています。std :: vectorのようなものをメンバーオブジェクトとして使用しているクラスを前方宣言すると、次のことに気づきました(ここの例):
class myTypeA
class A
{
A(){};
~A(){};
std::vector<myTypeA > getTypeA();
}
次のエラーが発生します。
microsoft visual studio 9.0\vc\include\vector(1112) : error C2036: 'myTypeA *' : unknown size
1> c:\program files\microsoft visual studio 9.0\vc\include\vector(1102) : while compiling class template member function 'bool std::vector<_Ty>::_Buy(unsigned int)'
1> with
1> [
1> _Ty=myTypeA
1> ]
1> d:\cpp\A.h(15) : see reference to class template instantiation 'std::vector<_Ty>' being compiled
1> with
1> [
1> _Ty=myTypeA
1> ]
#include "myTypeA.h"を使用すると、これは正常に機能します。なぜですか?