У меня есть ситуация, когда у меня есть экземпляр класса, который должен вызвать функцию из включающего класса. Верхний класс генерируется кодом и компилируется после нижнего класса. Как следствие, имя верхнего класса не известно нижнему классу.
class topClass
{
public:
void topFunction();
bottomCLass * bcInst;
}
class bottomClass
{
void * owner;
void someFunction() {owner->topFunction(); }
}
Очевидно, что это не сработает, поскольку нет определения для topClass.
Как я могу организовать это так, чтобы функция topClass могла быть вызвана из функции bottomClass? Я пытался использовать родительский класс с чисто виртуальной функцией, но это вызывает сбой при вызове функции.
//This is defined and compiled with bottomClass
class classTemplate
{
public:
virtual void topFunction()=0;
}
class topClass : public classTemplate
{
public:
void topFunction();
bottomClass * bcInst;
}
class bottomClass
{
classTemplate * owner;
void someFunction() {owner->topFunction();//Crashes here }
}
Есть ли лучший способ решить эту проблему? Единственное, что я не могу сделать, это дать нижнему классу имя / определение высшего класса, однако наличие и имя topFunction гарантировано.