我有,我想在一些額外的功能來包裝一個向量:獲取類型名牛逼
template <typename T>
class PersistentVector : PersistentObject
{
private:
std::vector<T> values;
public:
virtual void read();
現在,我將如何去了解它是否必須在定義閱讀()類的外部知道typename T?
首先嚐試:
void PersistentVector::read()
{
// How can I get the iterator type?
typedef std::vector<T>::iterator it_type; // vector cannot be resolved
}
第二個嘗試:
// error: Member declaration not found
template <typename T>
void PersistentVector::read()
{
typedef std::vector<T>::iterator it_type; // no error
}
實際上,你應該在第二次嘗試得到一個錯誤。你需要一個'typename'。也許你的編譯器不符合要求。 – juanchopanza
'typedef typename std :: vector :: iterator it_type;' - 看起來像@ juanchopanza打敗了我:-) –
這是一個模板化的函數,您想要使用,您需要將主體移動到標題或在cpp文件中明確聲明你想要使用的類型 –