2016-07-12 70 views
0

我有一个使用预先存在的库的类。有一个函数调用需要一个函数指针,我试图传入我的类中的函数。它虽然不编译。我能做些什么来解决这个问题? (另外,我确信这是以更清晰的方式被问到的,因为我对此表示歉意,所以我的道歉)。 注:这是一个arduino。使用函数指针传递类函数到外部库

在我的主要节目,我有以下代码...

#include "CM.h" 

CM cm; 

void setup() { 
    cm.setup(); 
} 

CM.h

class CM { 
    private: 
     LibClass *lib; 
     void onInit(); 

    public: 
     void setup(); 
}; 

CM.cpp

#include "CM.h" 

void CM::setup() { 
    lib->attach(onInit); // <-- this isn't working. 
} 

void CM::onInit() { 
    Serial.println("HERE I AM"); 
} 

回答

0

传递一个成员函数,你需要使其成为“静态”,然后通过全范围限定符:

#include <iostream> 

    void attach(void (*func)(void)); 


    class CM { 
    private: 
    static void onInit(); 

    public: 
     void setup(); 
    }; 

    void CM::setup() 
    { 
     attach(CM::onInit); 
    } 

    void CM::onInit(void) 
    { 
     std::cout << "HERE I AM"; 
    } 

    // a global function pointer for this example 
    void (*p_func)(void); 

    // a "library" attach function 
    void attach(void (*func)(void)) 
    { 
     p_func = func; 

    } 


    int main(int argc, const char * argv[]) { 
     CM my; 

     my.setup(); 

     p_func(); // like the library call 

     return 0; 
    }