似乎没有针对它的任何规则,以及我得到的错误
std::vector< std::array<int,8> > output;
output.resize (8);
是C2036 'std::array<int,0x08> *': unknown size
没有意义。 <vector>
内的代码正在推进内部end
指针,该指针在其他地方也被使用(因为扩展的计算大小)。 struct{int x[8];}
的大小肯定是#34;已知&#34;。
这里发生了什么?
嗯,因为它不仅仅是一个简单的错字或其他类似的东西,并且在其他人尝试它时似乎工作正常(并且其他人写的样本为我工作!)我减少了源文件,直到什么都没有留下但违规的陈述仍然失败。这是整个文件。预编译的标头已关闭。
//#include <SDKDDKVer.h>
#include <vector>
int main()
{
std::vector< std::array<int,8> > output;
output.resize (16);
}
我正在使用x64构建,发布版本。
vector
不是#include,而是array
!
它显然是在其他标题中向前声明但是不完整。
答案 0 :(得分:5)
这段代码似乎一切正常。
#include <vector>
#include <array>
int main() {
std::vector< std::array<int,8> > output;
output.resize(8);
return 0;
}
您是否添加了#include <array>
行?