指向 C++ 中的对象属性的指针
Pointers to object properties in c++
我有一个方法需要计算对象中两个变量的结果,所以我使用指针来返回结果。出现此问题的原因是对象属性是私有的,只能通过 getter 方法访问。我拥有的代码如下所示:
Class myObject;
//Some other operations on myObject
double firstPram = myObject.getFirstDouble();
double secondPram = myObject.getSecondDouble();
someFunction(&firstPram, &secondPram);
myObject.setFirstDouble(firstPram);
myObject.setSecondDouble(secondPram);
这有效,但似乎不是最优雅或最有效的解决方案。做类似的事情
someFunction(&myObject.getFirstDouble(), &myObject.getSecondDouble());
不起作用,我明白为什么。我只想知道是否有办法通过带有指针的方法访问变量。
看起来someFunction
应该是Class
的成员,因为它读取和写入私有变量。它仍然可以重用独立someFunction
。例如:
void someFunction(double*, double*);
class Class {
double first_, second_;
public:
void someFunction() {
::someFunction(&first_, &second_);
}
};
问题是"你真的希望外部对象直接编辑私有变量吗?可能不是:你声明了它是私有的,所以你应该通过该类中的公共方法对其进行编辑。一个好方法是将整个对象传递给使用 getter 和 setter 方法编辑变量的someFunction
。
如果您更改函数getFirstDouble
以返回引用,则第二个代码段将起作用:
double& getFirstDouble()
当然,它会比你目前的getter和setter更能破坏封装。
在你的类中someFunction()
函数怎么样?
让该函数操作对象的变量。
因此,通过调用 myObject.someFunction()
,您可以执行必要的功能。此外,您也不必通过getter和setter公开变量。
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 重新检查时指针属性会更改
- 返回的指针属性中类实例上的矢量属性消失
- boost::spirit指针属性是用nullptr初始化的吗?
- 如何使用指针从另一个类访问属性
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- 使用智能指针属性创建资源库函数?
- 通过指针算法调用结构的结构属性
- C++对象共享属性 - 使用指针或引用
- C++ 使用成员函数返回结构体指针属性的值
- 指向结构的指针保留某些属性,同时将其他属性重置为零(使用 map)
- 当我初始化了指针属性 allready 时,如何将 QGraphicsItem 向下投射到创建的类?
- 如何使用boost::graph dijkstra的算法,如果顶点属性是指针?
- 提升属性树:使用指向节点及其父节点的指针删除节点
- 如果使用类的指针属性来访问堆,如何避免非标量类型的错误
- QT UI指针中缺少属性和方法
- 访问派生属性和给定基指针的方法的更简单方法
- 访问指针类型的静态属性
- C++基类指针容器中,编辑特定对象的属性
- OpenGL顶点属性指针或着色器不工作