簡體   English   中英

函數指針發布C ++ / Arduino

[英]Function Pointer Issues C++ / Arduino

我有一個帶有一個類的頭文件,以及幾個這樣的聲明和非靜態成員函數:

    //foo.h
    ...
    #include <bar.h>

    class foo
    {
        ...
        public:
            void myFunction();
    };

以及具有結構和類的頭文件:

    //bar.h
    ...
    struct baz
    {
         class foo;
         ...
         void (foo::*functionPointer)() = NULL;
    }

    class bar
    {
        ...
        public:
            static myOtherFunction();
    };

我想解決bar.cpp的靜態函數“ myOtherFunction”中的函數指針,例如:

    void bar::myOtherFunction()
    {
        ...
        baz b = baz();
        b.functionPointer = &foo::myFunction;
    }

但這會給我一個編譯器錯誤:

    bar.cpp:247:22: error: cannot convert 'void (foo::*)()' to 'void baz::foo::*)()' in assignment
          b.functionPointer = &foo*:myFunction;
    Error compiling

可以肯定的是,對於任何有c / c ++經驗的人來說,這都是明顯的錯誤,但是現在我被困住了,非常感謝您的幫助。 謝謝...

如果可以在編譯器中訪問C ++ 11庫/類,請包括functional庫。 在這里說明。 它將顯示一種制作完全“打包”對象的方法,這些對象同時引用所需的方法和類實例。

如果沒有,請非常仔細地閱讀C ++ FAQ的“ 指向成員指針”部分。 作為語言的核心部分,所有地方都支持這一點。

祝好運。

暫無
暫無

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

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