我想要一个成员变量,这是一个双指针。对象,指向的双指针不得从类外修改。
我的以下尝试产生了一个 “从'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
答案 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;
};