【发布时间】:2018-11-17 13:20:07
【问题描述】:
我是 C++ 新手,并且在多态性上苦苦挣扎。 我有一个项目,我需要一个基类(比如说 Master)和三个派生类。
class Master {
public :
virtual void run();
//Other attributes non-important for the topic
}
class Derived1 : public Master {
public:
void run();
//attributes
}
class Derived2 : public Master{
public :
Derived2(Derived1* ptr1) {ptr = ptr1;} //there comes the cause of the problem
void run();
private :
Derived1* ptr;
}
在我的主目录中,我想创建一个多态列表vector<Master*> poly_list;
但问题是这个列表只包含 Master 类的指针,所以即使它可以调用正确的函数 run();我无法将 Derived1 的地址发送给 Derived2 的构造函数。
我想这样继续:
int main
{
vector<Master*> poly_list;
poly_list.push_back(new Derived1());
poly_list.push_back(new Derived2(poly_list[0]));
return 0
}
当我编译代码时,编译器告诉我它不能为构造函数将类型 Master 转换为 Derived1。
有人有办法让这个工作吗?提前致谢。
【问题讨论】:
标签: polymorphism