存储函数指针供以后使用

时间:2013-06-14 02:47:55

标签: 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_ */

SPI.CPP:

#include "spi.h"

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

void SPI::call() {
    //SPI::mycallback();
}

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

1 个答案:

答案 0 :(得分:8)

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

在spi.cpp中

SPI::foo SPI::mycallback = NULL;
相关问题