Это вопрос, чтобы увидеть пределы языка C++.с использованием typedef из другого класса круговым способом
Большинство круговых зависимостей классов могут быть решены с помощью деклараций и указателей вперед.
Но мне интересно, если это может быть как-то решать:
struct Y; // forward declaring Y does not solve the problem
struct X {
using T = int;
using Other = Y::T; //error: incomplete type 'Y' named in nested name specifier
};
struct Y {
using T = float;
using Other = X::T;
};
Синтаксический его человеческим глазом, вы можете легко увидеть, что в этом коде X::Other
может тривиальным понимать как float
, потому что Y::T
не зависит ни от чего , Однако я не знаю ни одного синтаксиса, который позволил бы «переслать объявление typedef», что-то вроде typename Y::T = float;
(но всегда есть неисследованные темные углы C++) или любой метод или идиома, которые позволили бы использовать вышеуказанные typedefs.
. Есть ли способ решить проблему выше? (в частности: каждый класс использует typedef другого класса - не перемещая typedef вне класса)
Да, это то, о чем я думал. Любопытно, существуют ли другие решения. – bolov