![](/img/trans.png)
[英]Template to Bind non-member static function alongside with member 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.