Car*_*ock 2 c++ arrays inheritance
我需要创建一个类,比方说FineStack,谁应该声明一个能够管理不同类型罚款的结构(LightFine,SeriousFine).两者的超类都是Fine.
问题是,我真的需要模板吗?我认为没有必要,所以这就是我的想法:
- >声明Fine *fines; 而且...创建数组(罚款?数组类型的-的)Fine的对象(超类),它应该能够同时管理LightFine和SeriousFine对象.
- >问题是.我该如何申报?Fine应该是一个抽象类,因此不能创建任何实例(实例应该是LightFine's或SeriousFine's).
我对此感到困惑,因为我找不到获得它的方法.我在Stackoverflow中读过多个问题,你们通常建议使用这些问题std::vector,这使你更容易管理这类东西.
我应该这样走,忘记最初的想法吗?
我需要一个能够以任何顺序处理来自两个子类的任何对象的结构(让我们说... 3 LightFine和2 SeriousFine......或者从结构的开始到结束彼此交替...无论如何.
Ami*_*hum 10
我想指出你正确的方向,而不只是给你整个shebang.如果这没有帮助,请询问有什么问题:
虽然Fine无法实例化,但您可以指向它,因此:
Fine* f1 = new LightFine();
Fine* f2 = new SeriousFine();
Run Code Online (Sandbox Code Playgroud)
都是合法的,因为LightFine是-a Fine和SeriousFineis-a Fine.
编辑:我看到这还不清楚.如果您阅读上述内容,您可以看到我可以握住一个指针Fine*,然后让它"暗中"指向其中一个LightFine或SeriousFine.这意味着,如果我要保留一堆Fine*指针,其中一些可能是LightFine和一些SeriousFine.即,我可以这样做:
Fine** fines = new Fine*[5];
f[0] = new LightFine();
f[1] = new SeriousFine();
...
for (int i=0; i<5; i++) {
std::cout << fines[i]->toString() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
输出将是:
轻微的
严重的罚款
...
如果你不希望使用矢量,它也应该是类型vector<Fine*>和不 vector<Fine>.
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |