簡體   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