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