Hug*_*ugo 1 c++ pointers constants vector
我认为标题清楚地解释了我的问题....考虑以下片段:
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;
}
Run Code Online (Sandbox Code Playgroud)
这条线不应该critters[2] = new Critter();是违法的吗?
谢谢
其实这条线应该是非法的(即使考虑#include <vector>和using std::vector;):
vector<Critter* const> critters;
Run Code Online (Sandbox Code Playgroud)
因为要求在容器中使用的类型是可分配的,而任何const明显不可分配的类型.