如果可以将它们组合起来,需要单独的获取和设置功能,如下所示:
class A {
private:
int var = 0;
public:
int& getset(){ return var; };
};
int main()
{
A a = A();
a.getset() = 4;
std::cout << "Hello, " << a.getset() << "!\n";
}
我假设有一些我忽略的东西,但如果这不是一个好主意;为什么以这种方式访问私人会员呢?
答案 0 :(得分:2)
根本不需要getter和setter:只需将变量公开。
class A {
public:
int var = 0;
};
如果你想隐藏实现细节,那么想法是getter是const
而setter不是。所以它们必须是不同的功能
class A{
public:
int getValue() const;
int setValue(int new_value); // returns old value
private:
/* implementation details: Value may be encoded other than in a simple variable */
};
答案 1 :(得分:1)
如果您不需要进行任何值检查,则应将class
替换为struct
并删除不必要的方法:
struct A {
int var = 0;
};
int main()
{
A a;
a.var = 4;
std::cout << "Hello, " << a.var << "!\n";
}
但是如果你需要更困难的逻辑和var的一些检查,那么你应该编写单独的setter和getter,而不是你的。 getset()
是个糟糕的主意,不要再做了。