我有一個指針,以多態對象的矢量_v_polymorph
,我寫了一個模板的方法來收集所有指向特定類型的對象的矢量孩子:搜索特定類型及其在多形指針
template <class T> vector<T*> collect_all() const {
vector<T*> v;
for (auto e : _v_polymorph) {
if (typeid(T) == typeid(*e)) {
v.push_back(static_cast<T*>(e));
}
}
return v;
}
我想修改這個,以便在返回的向量中收集子類T
的實例。
我的想法在於測試與dynamic_cast
的關係,你會這樣做嗎?
只有當類型是多態時,這也是對當前代碼的要求。 –
你確定你需要一個指向不同類型對象的指針嗎?這非常令人震驚。 –
@ Cheersandhth.-Alf該向量包含粒子加速器元素的序列。元素可以是許多類型的磁體或組件。每個組件都有一組特定的參數,並對粒子束執行特定的操作。有時我寫了一個通用組件,然後從其中派生出實現不同跟蹤算法的其他組件,所以這就是爲什麼我想在那裏做這件事。不,我不知道關於Java的任何信息。 – DarioP