我有一个方法,它接受一个对象作为参数。
调用者和参数都有相同的成员(它们是同一个类的实例)。
在该方法中,比较特定的成员,然后基于该比较,需要操作参数对象的一个成员:
class Object {
// members
public:
someMethod (object other) {
int result;
member1 - other.member1 = result;
other.member2 = other.member2 - result;
}唯一的问题是,它实际上并没有改变这个作用域之外的other.member2,而且这种改变需要是永久性的。
所以,是的,对不起:我需要关于指针的建议...我在网上和书本上找过了,但我不能让它工作。我想你们中的一个人会在30秒内看到这个并知道答案。我有RFTM,正处于一个愚蠢的迷失中。我不是在鼓励你。
谢谢大家!
发布于 2010-07-26 04:02:17
这是因为您是通过值传递的(这等同于传递一个副本。可以把它想象成给某人制作一份文档的复印件,然后要求他们做出修改,你仍然保留着原件,所以当你拿回它时,他们所做的修改不会反映在你的副本中。但是,如果你告诉他们你的副本在哪里,他们就可以对它进行更改,你下次访问它时就会看到)。您需要传递一个对对象的引用
Object& object或指向对象的指针
Object * object有关差异的讨论,请查看this page。
发布于 2010-07-26 04:02:16
您正在向someMethod函数传递other的副本。请尝试传递一个引用:
someMethod(object &other) { ...传递副本时,对other.member2的更改仅更改副本,而不更改原始对象。但是,传递引用会使other参数引用传递给someMethod(obj)调用的原始对象。
https://stackoverflow.com/questions/3330794
复制相似问题