2013-01-21 54 views
-1

我嘗試如何繼承模板struct operator()?

template<class T> 
struct getData 
{ 
    boost::shared_ptr<T> operator()() 
    { 
     return boost::shared_ptr<T>(new T()); 
    } 
}; 

struct getVector : public getData<std::vector<int>>{}; 

我想spesify通過的傳承()回報......但它似乎沒有返回所需的類型。我做錯了什麼?

+6

什麼是確切的問題?編譯錯誤?沒有做你期望的事情? –

+0

也在派生類中使用相同的語法。 – iammilind

回答

2

你不需要返回類型爲

boost::shared_ptr<T> operator()() 
^^^^^^^^^^^^^^^^^^^^ 
{ 
    return boost::shared_ptr<T>(new T()); 
}