【发布时间】:2014-06-24 14:46:14
【问题描述】:
我有一个类ClusterNode,其中包含一个Eigen::Matrix4d 作为类变量。我还有一个函数numNodes(),它告诉我ClusterNodes 的总数,以便我可以将它们收集到某种数组、列表或向量中。
但是,Eigen::Matrix4d 是对齐的,这意味着我不能将这种类型的对象存储在 std::vector<ClusterNode> 中,根据这个问题的答案 error C2719: '_Val': formal parameter with __declspec(align('16')) won't be aligned?
作为替代方案,我尝试使用数组。
但是,我做不到
const int n = numNodes();
ClusterNode array [n];
因为函数的返回值不被视为常量。
我还有什么其他选择?
【问题讨论】:
-
ClusterNode* array = new ClusterNode[n]; -
您是否阅读了该链接问题中的答案?
std::vector不再按值传递元素类型,因此函数参数的非过度对齐不再是问题。 -
@Ben 我必须有一个旧的编译器版本,因为我仍然得到编译器错误。
-
你的编译器版本是多少?
-
@Ben Visual C++ 10,在 Visual C++ 11 中添加了修复