C++如何直接调用类中定义的方法,其中另一个函数仅返回对该类的引用
C++ how to call a method defined in a class directly where only the reference to the class is returned by another function
在我的程序中,我有一个网格类(例如 myGrid
),我可以通过重载operator()
来获取对单元格(类)的引用。我的问题是每次我调用这个返回对单元格的引用的myGrid(x, y)
时,我都需要声明一个单元格引用。
cell& myCell = myGrid(x,y);
myCell.status = currentStatus;
这样做我遇到了错误:
(myGrid(x,y)).status = currentStatus;
我需要非常频繁地使用单元格中定义的函数。因此,每次我需要声明一个单元格引用时,这让我的代码看起来很紧急。有什么优雅的方法来解决问题吗?非常感谢。干杯!
不好意思。有一个错别字。假设 status 是单元格中的公共变量,并假设 currentStatus 是与 status 类型相同的变量。
网格是一个预定义的类,我无权修改它。它返回对单元格的引用。例如 cell& operator()(int x, int y)
很抱歉造成混乱。 myGrid(x,y).status 有效。我以前在某处犯了一个错误。当我遵守它时,错误发生在这一行中。非常感谢!
函数myGrid(x,y)返回的对象,可能超出范围。我的意思是,您返回的对象可能是局部变量。
您的operator()
是如何定义的(签名)?status
的签名是什么?它们应该是cell& operator() (int x, int y);
和int& status();
.提供不起作用的最小示例。
而最好的方法和优雅是使用显式方法:
myGrid.GetCell(x, y).SetStatus(s);
这更具可读性和可支持性。此外,使用 getter/setter 而不是返回引用可能允许您控制值更改的点 - 您可以在那里登录或设置断点。返回引用是一种不好的做法 - 您可能永远不确定它是否会被更改或仅在之后阅读。
相关文章:
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 类 Referention 中C++回调函数引用非静态函数
- 使用函数引用指向节点的指针删除链表中的节点?
- 解释通过从函数引用返回数组的语法
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 使用默认构造函数引用成员变量初始化错误
- 无法调用函数引用 c++
- 使用 decltype(this) 获取函数引用
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 从内联函数引用文件静态变量
- Boost::将sigaction函数引用绑定到实例
- 一种比函数引用更有效的方法
- 奇怪的未定义函数引用,函数调用C++不存在
- 是否可以检测绑定成员函数引用的对象是否被删除或销毁
- 构造函数引用参数导致seg错误
- 是否可以使函数模板从函数引用中获取“decltype”
- 无法让 Lua 函数引用"self"
- 如何解析变量和函数引用(Linker & Compiler)?
- 从不同模块调用函数 - 引用错误
- 如何在主函数中连接到数据库,然后从其他函数引用它