函数指针发出C++/Arduino

Function Pointer Issues C++ / Arduino

本文关键字:Arduino C++ 指针 函数      更新时间:2023-10-16

我有一个头文件,里面有一个类和几个声明和非静态成员函数,如下所示:

    //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++常见问题解答的指向成员部分。作为语言的核心部分,这得到了世界各地所有人的支持。

祝你好运。