返回只读双指针
Return a read-only 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
演员阵容是一种好的风格吗?
试试这个:
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;
};
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 取消引用指向不同线程中的原子对象的只读非原子指针是否安全
- 从c++的int指针返回一个只读指针
- 返回只读双指针
- 如何通过双指针将二维数组作为只读函数传递给函数