C++ getter 和 setter 不传递变量

Posted

技术标签:

【中文标题】C++ getter 和 setter 不传递变量【英文标题】:C++ getters and setters not passing variables 【发布时间】:2020-04-20 11:54:10 【问题描述】:

在以下两行代码中,它应该获取玩家的名称,然后将该名称设置为属性的所有者。当我运行它时,它只是输出“所有者:”

player.cpp

gb.getProperty(position).setOwner(name);
cout << "Owner: " << gb.getProperty(position).getOwner() << endl;

它应该打印轮到它的玩家的名字,我已经检查过这个名字是否正确,所以我相信它是所有者的 getter 和 setter: 这是我的所有者的getter和setter,我在这里做错了吗?

board.h

class properties 

public:

    string getOwner()  return owner; 
    void setOwner(string o)  owner = o; 

private:

    string owner;
;

我的所有文件都已正确连接,非常感谢任何帮助

【问题讨论】:

name 是否正确初始化? getProperty 是如何实现的?请提供minimal reproducible example 我的猜测是getProperty 返回一个副本而不是引用 在类属性的公共部分由'string getProperty() return name;'和'string name'在私有部分初始化 【参考方案1】:

虽然您的代码不可重现,但我猜您的 getProperty 返回的是值而不是引用。将其更改为参考可能会解决您的问题。

【讨论】:

以上是关于C++ getter 和 setter 不传递变量的主要内容,如果未能解决你的问题,请参考以下文章

定义了 getter 和 setter 且没有后备变量的变量叫啥?

Getter Setter:使用还是不使用?

成员变量/方法/ getter和setter是否可以包含在一个公共访问修饰符中?

为无父局部变量定义 Setter/Getter:不可能?

无法在 VS 2010 中设置 getter 和 setter

用户定义类型的 getter 和 setter 上的 C++(类似 CAS)同步