c++ - 操作数据成员 (C++)

标签 c++ pointers

我有一个将对象作为参数的方法。

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

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

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/

相关文章:

c++ - 无法为堆栈框架生成反汇编,因为无法翻译 URL & 段错误 : 11

c++ - 一个 C++ 客户端无法加载我们新注册的 COM .NET .dll,另一个可以

c++ - 为 HWND 分配任意地址

c++ - 为什么我可以有一个 std::vector<std::ofstream*> 但不能有一个 std::vector<std::ofstream> ?

c++ - opencv 解码格雷码模式相机校准错误。如何格式化内在和外在结果?

c++ - 从 QMainwindow 启动 QWidget

c - 使用 gcc 编译器了解 Linux 中 C 语言中的指针

c++ - C++语法差异:2D和1D数组(指针算术)

ios - 为什么对象有一个指针而不是一个整数?

c++ - 有没有办法从基础实例创建派生实例?