我有一个将对象作为参数的方法。
调用者和参数都有相同的成员(它们是同一类的实例)。
在该方法中,比较特定的成员,然后根据此比较,需要操作参数对象的一个成员:
class Object {
// members
public:
someMethod (object other) {
int result;
member1 - other.member1 = result;
other.member2 = other.member2 - result;
}
唯一的问题是它实际上并没有将 other.member2 更改到此范围之外,并且更改需要是永久的。
所以,是的,抱歉:我需要有关指针的建议...我已经在网上和书籍中查看过,但我无法让它工作。我想你们中的一个人会在大约 30 秒内看到这个并知道答案。我有 RFTM 并且不知所措。我不鼓励。
谢谢大家!
最佳答案
这是因为您是按值(value)传递(等同于传递拷贝。可以把它想象成给某人复印一份文件,然后要求他们进行更改,您仍然拥有原件,因此他们所做的更改不会'当你取回它时,它不会反射(reflect)在你的拷贝中。但是,如果你告诉他们你的拷贝所在的位置,他们可以去对它进行更改,你将在下次访问它时看到)。您需要使用
传递对对象的引用Object& object
或指向对象的指针
Object * object
查看 this page讨论差异。
关于c++ - 操作数据成员 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330794/