【发布时间】:2018-04-10 16:34:11
【问题描述】:
我只想在类是特定派生类时才做某事。那就是我有:
class X{
int id;
}
class A: public X{
void run();
}
class B: public X{
int lala;
}
我想做一些事情:
main(){
vector<X *> types;
types.push_back(new A);
types.push_back(new B);
int var = 0;
for(int i = 0; i<types.size(); i++){
if(types[i].isType(A)) {types[i].run();}
}
for(int i = 0; i<types.size(); i++){
if(types[i].isType(B)) {var = lala;}
}
}
我不希望 B 类有任何等价于 run() 的东西,我也不希望 A 类有等价于 lala。
我知道 fortran 有一个解决方法
select type ( x => var )
class is ( A )
x.run()
end select
但我不确定我在 C++ 中的选择是什么。
谢谢
【问题讨论】:
-
那么
X只是为了让它们保持在同一个向量中?