返回只读双指针

Return a read-only double pointer

本文关键字:指针 只读 返回      更新时间:2023-10-16

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

我下面的尝试产生了"从'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演员阵容是一种好的风格吗?

试试这个:

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

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

如果你真的想挑剔:

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

在c++中,真正需要原始指针(对于双指针来说更不用说了)的情况非常罕见,而您的案例并不是其中之一。一个合适的方法是返回一个值或引用,比如:

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