[英]Accessing Derived functions in polymorphism
我认为解释我的问题的最简单方法是显示一个我想做的简单例子。
我正在使用一个具有基类的库作为示例,请采取以下措施。
class base {
void function();
}
现在,派生类是库的一部分,并且都包含相同的功能。
class derived1 : public base {
void derivedFunction();
}
class derived2 : public base {
void derivedFuction();
}
在我创建的函数中,我定义了几个派生类,并构建了一个包含基类的结构。 然后,我在数组中设置一些值并使用多态性,并将thisClass的值设置为派生类。
void runMe() {
derived1 *thisDerivedClass = new derived1;
derived2 *thatDerivedClass = new derived2;
struct data {
const char * name;
int someInt;
base thisClass;
} dataSets [] = {
{"test1", 0, thisDerivedClass},
{"test2", 1, thatDerivedClass}
};
当我尝试从派生方法调用函数时,它显然不起作用。 我要弄清楚的是如何使它工作。 虚拟类没有意义,因为我必须进行很多更改。 我知道如何做的另一种方式是通过动态和静态类型输入,这对于这种情况没有意义。
const int count = sizeof(dataSets) / sizeof(data);
for(int i = 0; i < count; i++) {
dataSets[i].thisClass->derivedFuction();
}
}
最好的方法是什么?
您的情况就是发明了多态和虚函数。 在基类中声明一个虚函数,然后在派生类中重新实现它。 然后,您对base::function()
调用将自动解析为正确的派生类函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.