class a
{
const std::string * ptr;
void setPtr(const std::string & text)
{
ptr = &text; //it's wrong, I can set something to the pointer only at definition
}
}
解决方案是什么?指向我的对象的指针必须是 const(a 类的对象不能修改它),但我需要在运行时更改指针(它指向的内容)。
你可以用你当前的代码做到这一点。这条线
const std::string * ptr;
meanptr是指向 a 的指针const std::string。ptr本身不是恒定的,因此您可以更改它所指向的内容。
看到这个工作演示
您要么const在示例中遗漏了 a :
void setPtr(const std::string & text) const
或者你在打电话setPtr,const
const a* foo = something;
foo->setPtr(somestring);
基本上有三个规则:
您不能通过成员函数修改非常量a实例const。
您不能通过指针或对它a的引用来修改非常量实例。
您不能修改实例。constconst a