C++ 通过getter获得私人价值
C++ Getting private value with getter
我有一个包含私有和公共成员的类,我正在尝试使用 getter Get_Words() 来访问私有词成员。这一切都可以编译,但是当来自 dir[NORTH].Get_Words() = "NORTH";
的值每当单词只是一个公共函数而没有使用 Get_Words dir[NORTh].word = "NORTH";
() 成员函数时为什么Get_Words没有正确将值分配给单词?
class Words
{
public:
static void Set_Words();
string Get_Words();
private:
string word;
}
string Word::Get_Words()
{
return word;
}
...
dir[NORTH].Get_Word() = "NORTH";
我也试过
dir[NORTH].Get_Word() = Set_Word( string "North");
我很确定我做错了设置器,但我是 c++ 面向对象编程的新手,无法找出执行此操作的最佳方法。
std::string Get_Word()
按值返回,也就是它复制单词并返回它。当您尝试分配给它时,您正在尝试分配给右侧引用,这是不可能的。
解决此问题的一种方法是返回对单词的引用:
std::string& Get_Word();
但这通常被认为是不好的做法,因为参考可以比类更长久。更好的方法是在吸气器旁边提供一个二传手:
void Set_Word(const std::string& w) {word=w;}
甚至更好:
template <typename T>
void Set_Word(T&& w) {word=std::foreward<T>(w);}
为了获取私有值,通常会实现一个公共 get 函数。
你想要设置值 - 通常为此任务实现一个公共设置函数:
void Set_Word(string& newValue) { ... }
或者实现 Getter 作为返回引用,正如来自莫斯科的 Vlad 所说。
相关文章:
- 通过方法访问结构
- 通过递归进行因子分解
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 尝试通过多个向量访问变量时,向量下标超出范围
- C++如何通过用户输入删除列表元素
- 通过多个头文件使用常量变量
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何通过派生类函数更改基类中的向量
- 如何通过 getter 函数删除矢量的元素?
- C++ 防止通过 getter 更改引用
- 如何通过定义隐藏字段,仅提供二传手和getter
- 通过 getter 访问列表的元素与直接访问类成员给出了不同的答案
- C++ - 通过 getter 函数在单独的类中从对象指针映射访问成员函数
- C++ 通过getter获得私人价值
- 通过引用返回或创建一个典型的setter/getter
- 通过属性getter访问std::map将返回垃圾值
- 通过在getter方法上应用begin()获得的迭代器不允许访问指向列表的第一个元素
- 通过getter访问的c++类成员会产生垃圾,直接访问可以,但std::cout会干扰
- std::map 中的对象指针在通过 getter 检索时损坏