指向c ++中的对象属性的指针

时间:2014-08-06 09:50:41

标签: c++ pointers

我有一个方法需要计算对象中两个变量的结果,所以我使用指针返回结果。出现此问题的原因是对象属性是私有的,只能通过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());

不起作用,我明白了。我只是想知道是否有办法通过带指针的方法访问变量。

4 个答案:

答案 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公开变量。