【发布时间】:2016-02-02 04:21:22
【问题描述】:
似乎没有任何规则反对它,我遇到的错误
std::vector< std::array<int,8> > output;
output.resize (8);
是C2036 'std::array<int,0x08> *': unknown size
这没有意义。 <vector> 内部的代码正在推进内部end 指针,该指针也用于其他地方(扩展的计算大小也是如此)。 struct{int x[8];} 的大小肯定是“已知的”。
这是怎么回事?
嗯,因为它不仅仅是一个简单的错字或类似的错误,而且当其他人尝试它时似乎可以正常工作(并且其他人编写的示例对我有用!)我削减了源文件,直到除了有问题的语句什么都没有留下它仍然失败。这是整个文件。预编译头文件已关闭。
//#include <SDKDDKVer.h>
#include <vector>
int main()
{
std::vector< std::array<int,8> > output;
output.resize (16);
}
我正在使用 x64 构建,发布版本。
想通了:
vector 不是缺少#include,而是array 缺少#include!
它显然是在其他标头中前向声明的,但不完整。
【问题讨论】:
-
错误消息说指针的大小是未知的——当然,这也没有意义。
-
你能提供更多代码来更好地理解上下文吗?你添加了“#include
”行吗? -
请复制粘贴您提供给编译器的确切文件(带有
#includes)。 -
如果没有mcve 和有关编译器的详细信息,我们无法提供帮助,您的帖子可能会被关闭。
-
@JDługosz 当我删除
<array>的包含时,我得到了同样的错误。你确定你的包含是正确的吗?
标签: c++ stl visual-c++-2015