我正在尝试为D3DXMATRIXA16
创建一个向量,如下所示:vector<D3DXMATRIXA16> matrices;
并收到错误:
d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) :
错误C2719:'_ VAL':形式参数 与__declspec(对齐('16'))将不会 对准
e:\projects\emuntitled\em\emscratch\emshadow.h(60) :
:参见类模板的引用 实例化'std :: vector&lt; _Ty&gt;'存在 编译 同 [ _Ty = D3DXMATRIXA16 ]
为什么会这样?
感谢您的帮助!
答案 0 :(得分:15)
这是known issue [链接死],stl :: vector无法正确包含对齐的数据,例如D3DXMATRIXA16。一张海报固定了根本原因(或者至少是其中一个?):vector :: resize的声明按值传递对齐的数据,而不是const引用。 在该线程中提出了几种解决方法,最安全的是完全删除stl :: vector 。您可能还想自己修复stl标头并重新编译 - 这实际上可能比听起来更容易,但我自己也没有这样做过。
编辑:链接现已被破坏(感谢@David Menard),这里是an alternative, more elaborate answer。
问题已在VS2012RC中修复 - 这是指向a corresponding connect issue [link dead]的链接。事实证明,它实际上是C ++标准本身的一个问题,已于2008年修复。
答案 1 :(得分:2)
看起来std :: vector类需要模板参数对齐(1);可能是某种快速索引。