C++ c++;遗产不被承认
有什么解决方案吗?或者我必须准确地保留类类型 //头文件C++ c++;遗产不被承认,c++,oop,inheritance,C++,Oop,Inheritance,有什么解决方案吗?或者我必须准确地保留类类型 //头文件 Class Car { public: Car(); virtual ~Car(); }; class Bmw:Car { public: Bmw(); virtual ~Bmw(); }; void Start(Car& mycar) {}; //cpp文件 Car::Car(){} Car::~Car() {} Bmw::Bmw() :Car::Car(){} Bmw::~Bmw
Class Car {
public:
Car();
virtual ~Car();
};
class Bmw:Car {
public:
Bmw();
virtual ~Bmw();
};
void Start(Car& mycar) {};
//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;
}
你应该写
class宝马:公共汽车
这里您想要的是公共继承,而不是私有继承(这是
C++
中类的默认继承)。您应该编写类Bmw:public Car
这里您想要的是公共继承,而不是私有继承(这是
C++
中类的默认继承)。您有Bmw
从Car
私有继承,这阻止将Bmw
引用转换为Car
引用。将定义更改为:
class Bmw : public Car
您有
Bmw
从Car
私自继承,这会阻止将Bmw
引用转换为Car
引用。将定义更改为:
class Bmw : public Car
C++默认为私有继承,因此,您需要将Bmw声明为:
class Bmw:public Car
另外,为了完全准确,您应该真正将
Start
作为Car
的虚拟方法,并根据需要在子类中重写它 C++默认为私有继承,因此,您需要将Bmw声明为:
class Bmw:public Car
另外,为了完全准确,您应该真正将
Start
作为Car
的虚拟方法,并根据需要在子类中重写它 您需要公共继承-它表示派生类型和基类型之间的关系。正如宝马是一辆汽车,而私有继承(未明确指定时的默认值以及您在此处拥有的内容)则表示在关系方面的实现
尝试:
您需要公共继承-它表示派生类型和基类型之间的关系。正如宝马是一辆汽车,而私有继承(未明确指定时的默认值以及您在此处拥有的内容)则表示在关系方面的实现 尝试:
我不是机械师,但是
宝马级:公共汽车应该能很快帮你修好,让你走上理解继承的道路
继承对于类es(public
对于struct
s)默认为private
。我不是机械师,但是class Bmw:public Car
应该能帮你修好,让你在任何时候都能理解继承
继承对于class
es(public
forstruct
s)默认为private
。为什么Start
不是car的方法?另外,您不需要将car称为car::car(),只需将其称为car就可以了Bmw::Bmw():Car(){}
是完全有效的。为什么Start
不是Car的一种方法?另外,你不需要把Car称为Car::Car(),只要把它称为Car就可以了<代码>宝马::宝马():汽车(){}
完全有效。