我试图找到答案,但没有发现任何有用的东西。我试图创建一类静态方法,因此我可以将函数指针传递给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();
}
我一直试图摆弄它,当我评论我标记的线时,错误就消失了。不知道发生了什么。
答案 0 :(得分:8)
您需要在使用之前实例化静态成员:
在spi.cpp中
SPI::foo SPI::mycallback = NULL;