Два класса, использующие типы членов друг друга - PullRequest
0 голосов
/ 07 ноября 2019

Я определил класс 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.

Как я могу использовать типы членов друг друга?

Методы могут быть определены вне, но могут ли типы членов быть определены вне класса?

Мое единственное решение состоит в том, чтобы удалить типы из классов.

...