簡體   English   中英

在C ++ 11中獲取函數指針的語法

[英]Syntax to get function pointers in C++11

我正在嘗試理解函數指針,並且具有以下測試代碼:

#include <iostream>

using namespace std;

class Test {
public:
    void test_func() {
        cout << "Test func called.";
    }
};

void outer_test_func(Test &t, void (Test::*func)()) {
    (t.*func)();
}

int main(int argc, char *argv[]) {
    auto t = Test();
    outer_test_func(t, &Test::test_func);
}

這可行。 但是據我了解, Test::test_func&Test::test_func都導致指針。 那么,為什么不能使用前者而不是后者? 如果我嘗試的話,g ++會抱怨。

但是據我了解,Test :: test_func和&Test :: test_func都導致指針。

Test::test_func不是用於創建指向成員函數的指針或指向數據成員的指針的有效語法。 它從來不是有效的C ++語法。

cppreference (重點是我的),

可以使用&C :: m表達式精確初始化指向類C成員的非靜態成員對象m的指針。 C的成員函數中的&(C :: m)或&m之類的表達式不構成指向成員的指針。

暫無
暫無

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

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