【发布时间】:2010-08-18 21:12:52
【问题描述】:
我认为标题清楚地解释了我的问题....考虑以下 sn-p:
class Critter {
int m_Age;
};
int main()
{
vector<Critter* const> critters;
for(int i = 0; i < 10; ++i)
critters.push_back(new Critter());
critters[2] = new Critter();
return 0;
}
critters[2] = new Critter();这行不应该是非法的吗?
谢谢
【问题讨论】:
-
这就是为什么提供可编译的例子是个好主意。您提供的代码无法编译(即使在添加 #include
并将向量放入 std::vector 之后)。所以要么你做的事情与我们预期的略有不同,要么你没有剪切和粘贴代码(或两者兼而有之) -
它确实可以用 MSVC 编译。实现错误?
-
据我所知,如果您在容器中使用的类型违反了它必须满足的约束,标准中没有任何要求诊断错误。鉴于此,我认为您只会得到未定义的行为,因此如果它编译,并不意味着它是一个实现错误。
标签: c++ pointers vector constants