返回只读双指针

时间:2011-06-08 18:45:47

标签: c++ const double-pointer

我想要一个成员变量,这是一个双指针。对象,指向的双指针不得从类外修改。

我的以下尝试产生了一个 “从'std :: string **'无效转换为'const std :: string **'”

class C{

public:
    const std::string **getPrivate(){
        return myPrivate;
    }

private:
    std::string **myPrivate;
};
  • 如果我只使用简单的指针std::string *myPrivate
  • ,为什么相同的构造有效
  • 如何返回只读双指针?

    做一个明确的演员return (const std::string**) myPrivate

  • 是不错的风格

3 个答案:

答案 0 :(得分:3)

试试这个:

const std::string * const *getPrivate(){
    return myPrivate;
}

const std :: string **的问题在于它允许调用者修改其中一个指针,而这些指针未被声明为const。这使得指针和字符串类本身都是常量。

答案 1 :(得分:2)

如果你想真的挑剔:

class C {

public:
    std::string const* const* const getPrivate(){
        return myPrivate;
    }

private:
    std::string **myPrivate;
};

答案 2 :(得分:2)

在c ++中非常罕见的情况是真正需要原始指针(对于双指针来说更少),并且你的情况不会成为其中之一。一种正确的方法是返回一个值或一个引用,如下所示:

class C{

public:
    const std::string& getPrivate() const
    {
        return myPrivate;
    }

private:
    std::string myPrivate;
};