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 に答える