繁体   English   中英

在 C++ 中调用不带括号的类方法

[英]Call class method without parentheses in c++

一些 C++ STL 容器提供 getter,如

Foo.first

Foo.second

除了非常实用之外,还提高了代码的可读性。 现在假设我想在我自己的一个类中重现该功能。 是否可以定义类似的方法

Matrix.components

Matrix.size

代替

Matrix.components()

Matrix.size()

(相同但没有括号)? 怎么可能实现?

.first.second成员是数据,而不是代码。 因此,“调用”它们是没有意义的。 您的方法不是数据,而是代码,因此您必须使用()调用它们。 请注意, .size()是所有 STL 容器上的方法,而不是数据成员。

不,因为这是您在 C++ 中访问公共成员变量的方式。

您引用的容器必须是std::pair并且这是以这种方式访问​​的公共成员变量(对的两个元素),即数据而不是函数。

对于您的矩阵,要么创建这些成员变量(但这对于封装来说是个坏主意),要么将它们保留为函数(就像标准库中的许多容器一样)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM