Как определить классы внутри функции, чтобы они «знали» друг о друге?Вот очень глупая версия того, что я пытаюсь понять.Я хотел бы сделать что-то вроде:
void foo () {
struct A {
static void bar () {
B::hmm();
}
};
struct B {
static void hmm () {
A::bar();
}
}
}
Это не работает, потому что A :: bar () еще ничего не знает о B.Вне функции я мог отложить определение A :: bar () до объявления B.Что-то вроде:
void foo () {
struct A {
static void bar ();
};
struct B {
static void hmm () {
A::bar();
}
}
void A::bar () {
B::hmm();
}
}
Но, похоже, это не работает внутри функции.
Вместо некоторого умного объявления области видимости, которое делает все это работающим, я также приветствовал быокончательный ответ, говорящий, что это просто невозможно в C ++ (ссылка, пожалуйста).
Я знаю, что есть другие способы обойти это (например, объявление классов вне foo), поэтому я не ищуответы о том, как сделать нечто подобное ...