Я пытаюсь сделать простой обратный вызов в C++, но у меня возникают проблемы с этим, как я хочу.C++ Передайте функцию-член другому классу
По существу я хочу что-то вроде этого:
class A{
void A::AddCallback(void (*callBackFunction)(string)){
/*Code goes here*/
}
}
А класс В
#include "A.h"
class B{
B::B(){
A childObject;
childObject(MyCallBackFunction);
}
B::MyCallBackFunction(string arg){
/*Code goes here*/
}
}
Я знаю, что обычно вы хотите, чтобы определить заголовок AddCallback
с чем-то вроде B::callBackFunction
но мне нужно import A
в B
, так что мне было бы неудобно иметь оба класса, импортирующих друг друга. Я знаю, что я видел это раньше, но я не могу получить синтаксис право
Последняя часть предполагает, что вы хотите знать, как решать проблемы круговой зависимости; если это так, см. концы этих ответов: http://stackoverflow.com/a/628079/5386374 и http://stackoverflow.com/a/4757718/5386374 [В частности: Если Ах не нужно знать внутреннюю подробности, вперед объявить 'B' в' Ah', '#include" Bh "' в 'A.cpp', &' #include "Ah" 'в' Bh'. Если B.h не нужно знать A, переадресуйте 'A' в' B.h', '#include" A.h "' в 'B.cpp', &' #include "B.h" 'в' A.h'. Или оба: forward объявить 'A' в' B.h', переслать объявить 'B' в' A.h' и поставить '# include' в файлы '.cpp'.] –