Я определил класс A и класс B следующим образом:
class A
{
public:
using Type = int;
B::Type v;
};
class B
{
public:
using Type = double;
A::Type v;
};
И затем я получаю ошибку компиляции
error: 'B' does not name a type
Следующие коды тоже не работают.
class B;
class A
{
public:
friend class B; // makes no sense
using Type = int;
B::Type v;
};
class B
{
public:
using Type = double;
A::Type v;
};
Вы знаете, класс не может быть определен дважды, поэтому A должен быть определен после B, или B должен быть определен после A.
Как я могу использовать типы членов друг друга?
Методы могут быть определены вне, но могут ли типы членов быть определены вне класса?
Мое единственное решение состоит в том, чтобы удалить типы из классов.