存储函数指针供以后使用

Jus*_*ago 1 c++ embedded function-pointers

我试图找到答案,但没有找到任何有效的方法.我正在尝试创建一类静态方法,因此我可以传入一个函数指针,SPI::transmitData()以便稍后调用SPI::call().但是,我收到一个错误:

未解析的符号SPI :: mycallback,首先在./spi.obj中引用

spi.h中:

#ifndef SPI_H_
#define SPI_H_

#include "msp430g2553.h"

class SPI {
public:
    typedef void (*foo)(void);
    static foo mycallback;

    static void transmitData(unsigned char data, foo callback);
    static void call();
};

#endif /* SPI_H_ */
Run Code Online (Sandbox Code Playgroud)

SPI.CPP:

#include "spi.h"

void SPI::transmitData(unsigned char data, foo callback) {
    mycallback = callback; // causes error
    UCA0TXBUF = data;
}

void SPI::call() {
    //SPI::mycallback();
}
Run Code Online (Sandbox Code Playgroud)

我一直试图摆弄它,当我评论我标记的线时,错误就消失了.不知道发生了什么事.

bil*_*llz 8

您需要在使用之前实例化静态成员:

在spi.cpp中

SPI::foo SPI::mycallback = NULL;
Run Code Online (Sandbox Code Playgroud)

  • @JustcallmeDrago然后你应该接受答案;-) (4认同)