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
的引用来修改非常量实例。
您不能修改实例。const
const
a