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

Pointers to object properties in c++

本文关键字:属性 指针 对象 指向 C++      更新时间:2023-10-16

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