如何为类成员变量编写setter
How to write setter for class member variable?
我想写一个简单的类在c++ getter和setter为类成员变量。getter工作得很好,但我不能写setter。是否有可能用setter覆盖"m_var",或者这仅适用于指针变量?
class Foo: public QObject {
Q_OBJECT
public:
MyOtherClass& getVar() {
return m_var;
}
private:
MyOtherClass m_var;
};
应该是这样的:
// this is your setter
// you can set the var parameter as const because it is just copied to var
void setVar(const MyOtherClass& var){m_var = var;}
//this is your getter
MyOtherClass& getVar() {return m_var;}
// also this getter should be declared as const because you return a copy
// of m_var and thus you do not modify the object
MyOtherClass getVarByCopy() const {return m_var;}
下面的代码用g++可以很好地编译:
class A
{
public :
int someInt;
};
class B{
A m_var;
public:
void setVar(const A& var){m_var = var;}
A& getVar() {return m_var;}
};
int main(int argc, char* argv[])
{
B b;
A a;
a = b.getVar();
b.setVar(a);
return 0;
}
我们错过了什么吗?
class Foo: ...
{
.....
.....
MyOtherClass& getVar() {
return m_var;
}
getVar()
实际上是一个setter,因为它返回一个非const引用。
检查此代码。
class MyOtherClass
{
public:
MyOtherClass(int i=10)
{
m_someInt = i;
}
int m_someInt;
};
class QObject
{
};
class Foo: public QObject
{
// Q_OBJECT
public:
MyOtherClass& getVar()
{
return m_var;
}
private:
MyOtherClass m_var;
};
void someFunc()
{
Foo f1;
printf("%d", f1.getVar().m_someInt);
f1.getVar() = 100;
printf("rn %d", f1.getVar().m_someInt);
}
虽然我不喜欢这样的设计。如果你真的希望getVar()只获取而不设置,那么它应该是
const MyOtherClass& getVar()const {
return m_var;
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在没有setter的情况下设置类内部类的成员变量?
- 公共变量是否比使用 getter 和 setter 更快?
- 如何为数组成员变量声明 getter/setter
- 如何在 setter 方法中设置 boost::optional 成员变量的值?
- 在功能静态变量上调用Setter一次
- 当argumentname和变量名相等时,c++类setter设置不同的变量
- c++setter编码约定.输入变量名称应该是什么
- 如何为指针类变量执行 setter 和 getter 函数
- 在 c++ 中确定具有相同变量名的成员的 setter 的行为
- 绑定C++成员变量:getter/setter 或原始指针
- 带有Setter或Boolean Getter的变量
- 混合getter /setter和普通变量
- 为什么我不能在c++中访问我的私有变量和getter和setter消息
- 如何为类成员变量编写setter