10

私はD3DXMATRIXA16そのようなベクトルを作成しようとしvector<D3DXMATRIXA16> matrices;ています:そしてエラーが発生しています:

     d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) :

エラーC2719:'_ Val':__declspec(align('16'))を含む正式なパラメーターは整列されません

    e:\projects\emuntitled\em\emscratch\emshadow.h(60) :

:[_ Ty=D3DXMATRIXA16]でコンパイルされているクラステンプレートのインスタンス化'std::vector<_Ty>'への参照を参照してください。

なぜそれが正確なのですか?

助けてくれてありがとう!

4

2 に答える 2

15

stl::vectorにD3DXMATRIXA16などの整列されたデータが適切に含まれないことは既知の問題[リンクデッド]です。1つのポスターが根本原因(または少なくともそのうちの1つ?)を固定しました:vector :: resizeの宣言は、const参照としてではなく、値によって整列されたデータを渡します。そのスレッドではいくつかの回避策が提案されており、最も安全なのはstl::vectorを完全に削除することです。stlヘッダーを自分で修正して再コンパイルすることもできます。これは実際には思ったより簡単かもしれませんが、私自身はそうしていません。

編集:リンクが壊れています(@David Menardに感謝します) 。これは別の、より複雑な答えです。

この問題はVS2012RCで修正されています-対応する接続​​の問題へのリンクは次のとおりです[リンクデッド]。実際には、2008年に修正されたC++標準自体の問題であることが判明しました。

于 2010-02-26T09:57:22.720 に答える
2

std :: vectorクラスでは、テンプレートパラメータがalign(1)である必要があるようです。ある種の高速インデックス作成の可能性があります。

于 2009-08-17T15:34:45.933 に答える