2012-04-06 50 views
1

我有一個複雜的問題,我需要幫助。執行一個函數來影響不同的模板類實例

我有一個基本情況,

class ParamBase 
{ 
    string paramValue; 
    //... 
} 

和一堆不同的模板參數類模板。現在

template <typename T> 
class Param : public ParamBase 
{ 
    T value; 
    //... 
} 

,帕拉姆的每個實例都有不同的模板參數,雙,INT,串...等

爲了方便,我有一個載體,其基類指針包含所有

vector<ParamBase*> allParamsObjects; 

的問題是:

如何運行一個單一的功能(全局或成員或任何東西,你的選擇),也將所有的茨艾倫已創建的實例使用不同模板參數的不同實例的字符串paramValue,並將轉換結果保存到Param :: value中的適當類型。這必須在保存在向量allParamsObjects中的所有對象上運行。

因此,如果第一個參數的模板參數是雙精度值,則必須將paramValue轉換爲double值並保存;如果第二帕拉姆的說法是INT,則第二的paramValue必須被轉換成int和保存價值...等

任何幫助,將不勝感激:-)

回答

1

像這樣的東西?

class ParamBase { 
    std::string paramValue; 
public: 
    virtual void convert() = 0; 
}; 

template <typename T> 
class Param : public ParamBase 
{ 
    T value; 
public: 
    virtual void convert() { 
     std::stringstream ss(paramValue); 
     ss >> value; 
    } 
}; 
+0

我有一個使用'boost :: lexical_cast'的解決方案,但我認爲它使用引擎蓋下的字符串流。 – Dennis 2012-04-06 17:27:57

0

ParamBase聲明一個抽象方法Convert,落實到每個模板派生類的字符串轉換爲值,然後撥打你的循環這個方法。

+0

非常感謝。我明白了:-) – 2012-04-06 18:07:35

相關問題