一些c ++ STL容器提供了像
这样的getterFoo.first
Foo.second
除了非常实用外,还提高了代码的可读性。现在假设我想在我自己的一个类中重现该功能。是否可以定义像
这样的方法Matrix.components
Matrix.size
而不是
Matrix.components()
Matrix.size()
(相同但没有括号)?怎么可能实现呢?
答案 0 :(得分:1)
.first
和.second
成员是数据,而不是代码。因此,“召唤”它们是没有意义的。您的方法不是数据,而是代码,因此您必须使用()
来调用它们。请注意,.size()
是所有STL容器上的方法,绝不是数据成员。
答案 1 :(得分:1)
不,因为这是您在C ++中访问公共成员变量的方式。
您引用的容器必须是std::pair
,这是以这种方式访问的公共成员变量(该对的两个元素),即数据而不是函数。
对于你的矩阵,要么创建这些成员变量(但这对封装来说是个坏主意),要么将它们保留为函数(就像标准库中的许多容器一样)。