Cześć. Mam pewien program z systemem callbacków podobnym do tego poniżej. Próbuję wywalić wszystkie funkcje callbacków do osobnych plików niestety nie jestem w stanie tego zrobić i nie mogę zlokalizować problemu. Przypisuję do handlera funkcję i to działa ale już gdy tą funkcję wywołam to find_callback wewnątrz nadal widzi tam nullptra przypisanego przy inicjalizacji. Jak to naprawić i gdzie leży problem?
Wersja która nie działa:
main.cpp
#include "callbacks.hpp"
int main() {
callbacks[0].handler = function;
function();
}
callbacks.hpp
#include "MonitorCallback.hpp"
extern void function();
static MonitorCallback callbacks[] = { { "function_name", nullptr }, ... }
static MonitorCallback find_callback(MonitorCallback param) {
for (auto& every : callbacks) {
if (every.handler == param)
return every;
}
}
some_callback.cpp
#include "callbacks.hpp"
void function() {
find_callback(function);
}
I wersja która działa:
main.cpp
#include "callbacks.hpp"
int main() {
callbacks[0].handler = function;
function();
}
callbacks.hpp
#include "MonitorCallback.hpp"
extern void function();
static MonitorCallback callbacks[] = { { "function_name", nullptr }, ... }
static MonitorCallback find_callback(MonitorCallback param) {
for (auto& every : callbacks) {
if (every.handler == param)
return every;
}
}
void function() {
find_callback(function);
}