Основная проблема, которую я вижу в коде в том виде, в каком я его вижу сейчас, - это вызов b::getfib(x)
из a::print_fib
, который не является правильным способом сделать этот вызов.статический, и не может быть, если «кеш» также не сделан статическим.Поэтому, чтобы вызвать его, вам нужен экземпляр b (который у вас есть в c).Вы можете передать это в свою функцию в a, но на самом деле в этом случае я не понимаю, зачем вам понадобится несколько экземпляров b.
Обратите внимание, что из вашего кода b еще не объявлено в заголовкео.Для правильной обработки зависимостей ваш код должен быть перекомпонован.