Problem z tablicą

0

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);
}
0

Przypisujesz nullptr i to samo znajdujesz, w czym problem?

Przy okazji, poczytaj o słowie kluczowym static, użyte do deklaracji obiektu w nagłówku spowoduje stworzenie osobnego obiektu w każdym TU (± plik cpp)

0
kq napisał(a):

Przypisujesz nullptr i to samo znajdujesz, w czym problem?

Przy okazji, poczytaj o słowie kluczowym static, użyte do deklaracji obiektu w nagłówku spowoduje stworzenie osobnego obiektu w każdym TU (± plik cpp)

Tutaj przypisałem coś innego ale masz racje, zapomniałem o tym napisać. I tak, static był problemem. Kompletnie o tym zapomniałem. Dzięki za pomoc.
callbacks[0].handler = function;

1 użytkowników online, w tym zalogowanych: 0, gości: 1