** Редактировать: это происходит только с llvm; GCC поддерживает это просто отлично.
Рассмотрим следующее.
Objective-C классы A и B.
B является подклассом A.
Мы хотим, чтобы C ++ Hiearchy был похож на:
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. Этот кажется самым похожим вопросом, который я мог найти, но я уверен, что это другая проблема.