【发布时间】:2012-08-29 19:02:39
【问题描述】:
以下代码无法使用 gcc 4.7.0 编译(使用 std=c++11 -O3)
int n;
std::vector< int[4] > A;
A.resize(n);
错误信息是长度,但最终
functional cast to array type ‘_ValueType {aka int[4]}‘
这是正确的吗?还是应该编译?更重要的是,如何避免这个问题? (没有定义一个新的结构来保存int[4])
编辑:
如何解决C++98的问题?
【问题讨论】:
-
只需使用
std::vector<std::array<int, 4>> A (n);。 -
@chris:假设您有
std::array可用。 -
@chris 好的,但是你在 C++ 98 中做什么?
-
您已经淘汰了任何具有不合理要求的解决方案。
-
@chris std::array 是一个围绕内置 c++ 数组的薄包装器,如果您不需要它,您可以创建一个包含长度为 4 数组的结构。我知道问题说不要,但我经常这样做。如果你想要索引,你可以重载
operator []。