我被要求在以下代码中找到错误。显然有5个错误,到目前为止我找到了其中的三个,这里是代码
#include <iostream>
class Base{
public:
Base(int data) : _data(data){}
virtual void printData(){
std::cout << "Base " << _data << std::endl;
}
private:
int _data;
};
class Derived : public Base{
public:
Derived(derivdata) : Base(derivdata){}
void printData(){
std::cout << "Derived " << _data << std::endl;
}
}
int main(){
Derived *var = new Derived(5);
var->printData();
Base* basevar = static_cast<Base>(*var);
basevar->printData();
}
Derived
不以半冒号结尾。 Derived
构造函数的参数未使用类型Base
的数据成员是固定的,因此无法在Derived
中尝试访问。 我正在努力寻找其他人,我怀疑这与main()
中的投射有关,但我对投射还不太了解。我希望在正确的方向上提供任何帮助。感谢
答案 0 :(得分:0)
Base* basevar = static_cast<Base>(*var);
这应该是
Base* basevar = static_cast<Base*>(var);