【发布时间】:2018-03-16 14:43:23
【问题描述】:
[编辑:抱歉,最初混淆了基类和子类]
给定
class Car : public Vehicle {...}
我想声明一个 Vehicle 类型的全局变量(或 &Vehicle,如果需要的话),初始化为 Car 实例......类似于
Vehicle &myCar = Car(red);
... 除了上面没有编译。 对我来说重要的是实例的分配方式与我使用的方式完全相同(这是用于 AVR 编程)
Car myCar(red);
我已经搜索过,但我就是想不通这个语法??
谢谢!
【问题讨论】:
-
你的概念倒退了。
Car是Vehicle的一种类型,而不是相反。您不能实例化基类然后将其分配给派生类。 -
使用指针类型。你不能初始化一个不完整的类型,只能分配
-
“初始化为车辆实例”是什么意思?
-
汽车 &myCar = Vehicle(red);完全不正确。你可以做的是: static Car* _myCar = nullptr;静态车辆* getCar() { if(nullptr == _myCar;) _myCar = new Car(red);返回_myCar; };也需要同步为thread safe。
-
看起来这是 XY 问题,你不明白你想要/需要做什么