Mel*_*oun 1 c++ oop inheritance
是否有一些解决方案或我必须保持完全类型?
//头文件
Class Car {
public:
Car();
virtual ~Car();
};
class Bmw:Car {
public:
Bmw();
virtual ~Bmw();
};
void Start(Car& mycar) {};
Run Code Online (Sandbox Code Playgroud)
// cpp文件
Car::Car(){}
Car::~Car() {}
Bmw::Bmw()
:Car::Car(){}
Bmw::~Bmw() {}
int main() {
Car myCar;
Bmw myBmw;
Start(myCar); //works
Start(myBmw); //!! doesnt work
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Don*_*nie 14
C++默认为私有继承,因此,您需要将Bmw声明为:
class Bmw:public Car
Run Code Online (Sandbox Code Playgroud)
另外,为了完全准确,你应该真正拥有Start一个虚拟方法,Car并在后代类中根据需要覆盖它.:)
您已Bmw私有继承Car,这会阻止将Bmw引用转换为Car引用.将定义更改为:
class Bmw : public Car
Run Code Online (Sandbox Code Playgroud)