C++多态性和具体方法

标签 c++ casting polymorphism

给出了 3 个类。

class vehicle{
public: 
void start();
}

class airplane: public vehicle{
void start();
void setRoute(route r);
void setAltitude(altitude a);
}

class boat: public vehicle{
void start();
void setRoute(route r);
}

假设我们通过命令行接收到一个参数,让我们了解我们是要管理一架飞机还是一艘船。

Vehicle* v;


if (parameter == 1) {
   v = new airplane();
   v->setRoute(r);
   v->setALtitude(a);
}

if (parameter != 1) {
   v = new boat();
   v->setRoute(r);
}


v->start();

请注意,船和飞机在开始前会调用不同的方法。 (启动是唯一常用的方法) 此代码将不起作用,因为 v 不包含方法 setRoute/SetALtitude。

实现此模式的正确方法是什么?

最佳答案

你可以轻松做到:

if(parameter != 1)
{
    boat *b = new boat;
    b->setRoute(r);
    v = b;
}

飞机类似。

关于C++多态性和具体方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38351322/

相关文章:

angular - RxJS Observable 发出数字; observer.next() 接受字符串; Typescript 如何处理这个问题?

c++ - Boost 图形库多态捆绑属性

javascript - Deno:为 Node.js 内置提供 Polyfill

c++ - 将内部 c++ 函数暴露给 llvm jit'd c++

C - BitArray - 设置 uint64_t 的单个位

c++ - 如何在 C++ 中将动态数组转换为静态数组?

c# - 泛型、多态性和继承

c++ - Qt-创建复杂的 “calculator”

c++ - Intellisense 不显示 Visual Studio 2019 中 cmake 项目的语法错误

c++ - Opencv3.1,SURf,报错