-6

それに対するルールはないようで、エラーが発生します

std::vector< std::array<int,8> > output;
output.resize (8);

C2036 'std::array<int,0x08> *': unknown size

これは意味がありません。内部のコード<vector>は内部ポインターを進めておりend、これは他の場所でも使用されます (拡張の計算されたサイズと同様)。a のサイズstruct{int x[8];}は確かに「既知」です。

何が起きてる?


うーん、それは単純なタイプミスなどではなく、他の人が試してみると問題なく動作するように見えるため (そして、他の誰かが書いたサンプルは私にとってはうまくいきました!) 問題のあるステートメント以外が何も残らないようになるまで、ソースファイルを切り詰めました。失敗します。これがファイル全体です。プリコンパイル済みヘッダーはオフになっています。

//#include <SDKDDKVer.h>

#include <vector>
    
int main()
{

    std::vector< std::array<int,8> > output;
    output.resize (16);

}

x64、リリースビルドを使用してビルドしています。


理解した:

#include の欠落でvectorはなく、array! 他のヘッダーで前方宣言されているようですが、不完全です。

4

1 に答える 1