Возможно ли в C++ иметь два класса, назовем их A
и B
, так что A
имеет функцию-член f
, возвращающую объект класса B
, а B
имеет функцию-член g
, возвращающую объект класса A
?
(Текст ниже просто показывает, что я "сделал домашнее задание".)
Проблема только в том, как написать сигнатуры этих функций, когда функция в первом определенном классе будет иметь неполный возвращаемый тип. Форвардные объявления здесь не помогают, потому что объекты возвращаются по значению.
Да, я знаю все обходные пути (дружеские глобальные функции, возврат по указателю,...), но я просто хотел бы знать, можно ли реализовать описанный выше интерфейс на C++. В качестве примера предположим, что я пытаюсь перегрузить оператор() для класса A
, чтобы он возвращал B
, и для класса B
, чтобы возвращать A
. Так как я перегружаю операторы, я должен возвращать значение (ну, если я не хочу динамического распределения, черт возьми:), а () должен быть перегружен как функция-член, поэтому я не могу использовать глобальных друзей.