-3
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 类的对象不能修改它),但我需要在运行时更改指针(它指向的内容)。

4

2 回答 2

2

你可以用你当前的代码做到这一点。这条线

const std::string * ptr;

meanptr是指向 a 的指针const std::stringptr本身不是恒定的,因此您可以更改它所指向的内容。

看到这个工作演示

于 2013-01-27T18:52:29.130 回答
1

您要么const在示例中遗漏了 a :

void setPtr(const std::string & text) const

或者你在打电话setPtrconst

const a* foo = something;
foo->setPtr(somestring);

基本上有三个规则:

您不能通过成员函数修改非常量a实例const
您不能通过指针或对它a的引用来修改非常量实例。 您不能修改实例。const
const a

于 2013-01-27T21:01:51.627 回答