繁体   English   中英

在多态中访问派生函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM