對於noob問題抱歉,但我似乎無法擺脫C++的靜態性質。問題:我有一個返回一個枚舉的類,根據它我必須使用另一個類來轉換所述類並返回一個向量。在代碼:取決於枚舉的函數超載
enum TYPES { TYPE_A, TYPE_B, TYPE C }
class A {
TYPES getType() {}
}
class B : public A {}
class C : public A {}
class D : public A {}
std::vector<?> convert_to_vector(const A& a) {
// depending on what enum is returned by a.getType()
// I have to convert a into B, C, or D class and return std::vector of
// an appropriate type, e.g. int for B, float for C, etc.
}
int main() {
A a;
auto v = convert_to_vector(a);
}
最簡單的方法將使用switch(a.getType())
但我在各種情況下具有不同的返回類型和使用auto
返回類型不起作用。我已經嘗試過模板和模板規範,但他們不接受由a.getType()
返回的運行時變量。我想在這裏我必須有一些簡單的解決方案,但我在這一點上已經沒有想法,並且會很感激任何指針。
謝謝!
你想用這個解決方案解決什麼問題?你不能使用虛函數,多態性和指向基類的指針嗎?一般來說,打開「類型」往往是一個糟糕的設計的標誌。 –
那麼,我正在使用一個庫給我所有的類和枚舉。正如我所說的,基類「A」通過該函數只告訴我它的類型,我必須將它轉換爲派生類來獲取向量所需的數據。我想創建一個由enum專門開發的派生類,但C++不是我的母語,我很快就迷失在模板中。 – maga