これは主に構文エラーだと思います(コンパイル中にキャプチャされませんが、実行時にのみエラーが発生します)
私は eventReceiver のベクトルを保持し、ベクトルからそれらを呼び出そうとするイベント駆動型アーキテクチャを開発しようとしています。
CommonIO.h
class CommonIO {
public:
typedef void (*incomingMsgReceiver)(char*);
void registerForIncomingMsg(incomingMsgReceiver);
void incomingMsgReceived(char*);
}
CommonIO.cpp
std::vector<void (*)(char*)> listeners;
void CommonIO::registerForIncomingMsg(incomingMsgReceiver receiverFunction) {
listeners.push_back(receiverFunction);
}
void CommonIO::incomingMsgReceived(char* buf) {
for (unsigned int j = 0; j < listeners.size(); j++) {
listeners[i](buf); //error, segmentation fault..how do i call it?
}
}
Main.h
class Main {
public:
static void msgReceived(char*);
void mainLoop();
}
メイン.cpp
void Main::msgReceived(char* msg)
{
printf("\n\n --------->>>>> %s \n\n" , msg);
}
void Main::mainLoop()
{
CommonIO::incomingMsgReceiver receiver = &Main::msgReceived;
CommonIO::getInstance()->registerForIncomingMsg( receiver );
}
incomingMsgReceived 関数は非同期プロセスによって呼び出されます
プログラムは正常にコンパイルされます..しかし、で壊れます:listenersi; ライン。これの適切な構文は何ですか?