簡體   English   中英

非 static 成員 function 模板的地址

[英]address of non static member function template

我試圖了解是否可以獲取非靜態成員 function 模板的地址。 下面不起作用,使用&sz<int>會導致其他錯誤。 獲取非 static 成員 function 模板地址的正確方法是什么?

311 struct XYZ
312 {
313    template <typename Z>
314    void sz()
315    {
316    }
317 
318    void func()
319    {
320       auto z = sz<int>;
321    }
322 };

導致錯誤

vs.cc:320:16: error: reference to non-static member function must be called; did you mean to call it with no arguments?
      auto z = sz<int>;

void sz()是模板並不重要,因為sz<int>是成員 function。 C++ 中沒有“地址”的概念——這是一個實現細節。 你可以擁有一個指向成員 function的指針,它的語法是:

auto z = &XYZ::sz<int>;

要在func()中調用它,您需要以下語法:

(this->*z)();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM