我正在撰寫的程式要求我實作特定的代碼,以便存盤在向量中的每個類實體都可以在單個陣列或向量中訪問。問題是實體屬于不同的類,不能單獨存盤在單個陣列/向量中。有什么辦法可以做到這一點?我實作了下面的代碼,但不幸的是我收到了一條我似乎無法擺脫的錯誤訊息。
class A {...}; //abstract
class B : public A {...};
class C : public A {...};
class D : public A {...};
class E : public A {...};
vector <B> vecb;
vector <C> vecc;
vector <D> vecd;
vector <E> vece;
vector <A*> mainvec = { vecb, vecc, vecd, vece };
這是我得到的錯誤:
Severity Code Description Project File Line Suppression State
Error (active) E0289 no instance of constructor "std::vector<_Ty, _Alloc>::vector [with _Ty=A *, _Alloc=std::allocator<A *>]" matches the argument list
uj5u.com熱心網友回復:
vector <A*> mainvec = { vecb, vecc, vecd, vece };
這永遠行不通。 mainvec期望保存原始A*指標,但您試圖將物件向量傳遞給它。
如果你真的想要一個向量來保存其他型別的向量,你可以使用std::variant它,例如:
std::vector<B> vecb;
std::vector<C> vecc;
std::vector<D> vecd;
std::vector<E> vece;
using VariantOfVectors = std::variant< std::vector<B>*, std::vector<C>*, std::vector<D>*, std::vector<E>* >;
std::vector<VariantOfVectors> mainvec = { &vecb, &vecc, &vecd, &vece };
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/457936.html
上一篇:如何使用Class語法將新的Book物件推送到空陣列中?
下一篇:如何優化getCommon方法?
