[英]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.