1
**編輯:這隻發生在llvm; gcc支持這一點很好。objective-C++:是否可以使用返回objective-c類並使用協變返回的方法來定義C++類?
請考慮以下情況。
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. This看起來像我能找到的最類似的問題,但我很確定這是一個不同的問題。
啊,這隻發生在llvm上:/我已經更新了這個問題,但我想這裏的真正答案是提交一個針對llvm的錯誤:http://llvm.org/bugs/show_bug.cgi?id= 10309 –
如果你不能切換回g ++,直到它被修復,我想你可以返回id作爲解決方法。 –