** Изменить: это происходит только с llvm; gcc прекрасно это поддерживает.
Обратите внимание на следующее.
Objective-c классы A и B.
B является подклассом A.
Мы хотим, чтобы иерархия C ++ выглядела так:
class X {
//...
public:
virtual A* getFoo();
};
class Y : public X {
//...
public:
B* getFoo();
};
Однако, если вы сделаете это, вы получите ошибку, поскольку типы Objective-c сбивают компилятор c ++ с толку:
error: virtual function 'getFoo' has a different return type ('Y *') than the function it overrides (which has return type 'X *')
Мне интересно, есть ли у кого-нибудь обходной путь для этого? (Очевидно, что в долгосрочной перспективе мы будем отходить от классов Objective-c, но это не сегодня).
P.S. Это кажется как самый похожий вопрос, который я мог найти, но я почти уверен, что это другая проблема.