Я пытаюсь понять ошибку компиляции из последней версии
vc ++. Ошибка возникает в классе, который наследует от двух базовых классов и
, включает виртуальную функцию, которая переопределяет функции в базовых классах, но
имеет другой тип возврата. < /P>
Код компилируется и правильно выполняется в G ++ и Clang. Сохраняет намерение кода?#include
using std::cout;
class Vr {};
class Ar : public Vr {};
class Br : public Vr {};
class Dr : public Ar, public Br {};
struct Vx {
virtual Vr* vf() {
cout
C:\wgreene\tests\c++\MiscTests\multInheritanceCovariantRetTest.cpp(16,15):
2> see declaration of 'Ax::vf' 2>
C:\wgreene\tests\c++\MiscTests\multInheritanceCovariantRetTest.cpp(31,15):
2> 'Vr': ambiguous base is not covariant
2>C:\wgreene\tests\c++\MiscTests\multInheritanceCovariantRetTest.cpp(31,15):
error C2555: 'Dx::vf': overriding virtual function return type differs
and is not covariant from 'Bx::vf' 2>
C:\wgreene\tests\c++\MiscTests\multInheritanceCovariantRetTest.cpp(23,15):
2> see declaration of 'Bx::vf' 2>
C:\wgreene\tests\c++\MiscTests\multInheritanceCovariantRetTest.cpp(31,15):
2> 'Vr': ambiguous base is not covariant
Подробнее здесь: https://stackoverflow.com/questions/796 ... turn-types
Класс C ++ с множественными типами наследования и ковариана ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
В Java можно назначить класс как другой класс без использования наследования.
Anonymous » » в форуме JAVA - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-