我认为标题清楚地解释了我的问题....考虑以下片段:
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();
不应该是非法的吗?
谢谢
答案 0 :(得分:5)
实际上这一行应该是非法的(即使是#include <vector>
和using std::vector;
):
vector<Critter* const> critters;
因为要求在容器中使用的类型是可分配的,而const
的任何内容都不是。
答案 1 :(得分:0)
抱歉,我没有发布整个代码,因为缺少的只是包含和使用...无论如何这里是整个代码:
#include <iostream>
#include <vector>
using namespace std;
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;
}
这个代码实际上编译得很好,即使在VS 2010中没有警告...... 再次感谢...