首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作数据成员(C++)

操作数据成员(C++)
EN

Stack Overflow用户
提问于 2010-07-26 03:58:26
回答 2查看 131关注 0票数 4

我有一个方法,它接受一个对象作为参数。

调用者和参数都有相同的成员(它们是同一个类的实例)。

在该方法中,比较特定的成员,然后基于该比较,需要操作参数对象的一个成员:

代码语言:javascript
复制
class Object {

   // members

public: 

someMethod (object other) {

   int result;
   member1 - other.member1 = result;
   other.member2 = other.member2 - result;

}

唯一的问题是,它实际上并没有改变这个作用域之外的other.member2,而且这种改变需要是永久性的。

所以,是的,对不起:我需要关于指针的建议...我在网上和书本上找过了,但我不能让它工作。我想你们中的一个人会在30秒内看到这个并知道答案。我有RFTM,正处于一个愚蠢的迷失中。我不是在鼓励你。

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-26 04:02:17

这是因为您是通过值传递的(这等同于传递一个副本。可以把它想象成给某人制作一份文档的复印件,然后要求他们做出修改,你仍然保留着原件,所以当你拿回它时,他们所做的修改不会反映在你的副本中。但是,如果你告诉他们你的副本在哪里,他们就可以对它进行更改,你下次访问它时就会看到)。您需要传递一个对对象的引用

代码语言:javascript
复制
Object& object

或指向对象的指针

代码语言:javascript
复制
Object * object

有关差异的讨论,请查看this page

票数 8
EN

Stack Overflow用户

发布于 2010-07-26 04:02:16

您正在向someMethod函数传递other的副本。请尝试传递一个引用:

代码语言:javascript
复制
someMethod(object &other) { ...

传递副本时,对other.member2的更改仅更改副本,而不更改原始对象。但是,传递引用会使other参数引用传递给someMethod(obj)调用的原始对象。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3330794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档