Этот вопрос находится где-то между теоретическим и практическим.Назначение функции обратного вызова в C++
У меня есть файл C (назовем его fileA.c и fileA.h)
fileA.h определяет-структуру как таковую:
typedef struct
{
/** Callback function which is called upon an event occurrence */
void (*FileAcb)(MyEvent event, uint8 val);
} MyStruct;
В fileB.cpp и fileB.h, Я пытаюсь назначить ему функцию обратного вызова следующим образом.
FileB.h
class FileB
{
public:
static void Callback(MyEvent event, uint8 val);
protected:
/**Protected members */
private:
/**Private members */
MyStruct myStruct;
};
FileB.cpp
bool FileB::Start()
{
myStruct.FileAcb= FileB::Callback;
return true;
}
void FileB::Callback(MyEvent event, uint8 val)
{
//do some stuff here.
}
И это работает. Тем не менее, я ищу способ, чтобы написать эту строку:
myStruct.FileAcb= FileB::Callback;
таким образом, что позволяет мой FILEB :: функцию обратного вызова НЕ быть статическим. Есть ли способ достичь этого?
«У меня есть файл C (давайте назовем его fileA.c и fileA.h)» - в зависимости от того, считаете ли вы заголовки как C-файлы (в смысле «язык C») или нет, это либо делает два Файлы C или один не имеют отношения к делу. Во всяком случае, это не C! – Olaf
@ Олаф Я предполагаю, что в этой ситуации я дал постороннюю информацию. В конечном счете, все, о чем я забочусь, это структура typedef в FileA.h. –
Вы искали в Интернете о своем вопросе? ^^ https://www.google.de/search?q=cpp+Callback+function+to+NOT+be+static.&ie=utf-8&oe=utf-8&gws_rd=cr&ei=_MiwVtqYF4fcO6f4s8gM –