我有一个方法需要计算对象中两个变量的结果,所以我使用指针返回结果。出现此问题的原因是对象属性是私有的,只能通过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());
不起作用,我明白了。我只是想知道是否有办法通过带指针的方法访问变量。
答案 0 :(得分:2)
看起来someFunction
应该是Class
的成员,因为它会读写私有变量。它仍然可以重用独立的someFunction
。 E.g:
void someFunction(double*, double*);
class Class {
double first_, second_;
public:
void someFunction() {
::someFunction(&first_, &second_);
}
};
答案 1 :(得分:1)
问题是“您真的希望外部对象直接编辑私有变量吗?”。可能不是:您将其声明为私有,因此您应该通过该类中的公共方法对其进行编辑。一个好方法是将整个对象传递给使用getter和setter方法编辑变量的someFunction
。
答案 2 :(得分:0)
如果您更改函数getFirstDouble
以返回引用,则第二个代码段将起作用:
double& getFirstDouble()
当然它会破坏封装,甚至超过你当前的吸气剂和制定者。
答案 3 :(得分:0)
如何在课堂上使用someFunction()
函数?
让该函数操纵对象的变量。
因此,通过调用myObject.someFunction()
,您可以执行必要的功能。此外,您也不必通过getter和setter公开变量。