1

我试图找到这个问题的答案,但没有找到任何有效的方法。我正在尝试创建一个静态方法类,这样我就可以传入一个函数指针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();
}

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

4

1 回答 1

8

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

在 spi.cpp 中

SPI::foo SPI::mycallback = NULL;
于 2013-06-14T02:52:06.900 回答