-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 for vector,而是 for array!它显然是在其他标题中前向声明的,但不完整。

4

1 回答 1

5

这段代码似乎一切正常。

#include <vector>
#include <array>

int main() {
    std::vector< std::array<int,8> > output;
    output.resize(8);
    return 0;
}

ideone测试示例

你加#include <array>线了吗?

于 2015-11-02T10:07:08.873 回答