2012-06-21 39 views
0

我想在typedef中有一個typedef,並想知道它是否可能?typedef在一個typedef

這是我想要實現的一個例子。

typedef std::vector<TypeA>*       pVparticle; 
typedef typename std::vector<TypeA>::iterator   VparticleItr; 
typedef std::map<pVparticle, Neutrino* >*    pMapPartpNu; 

//Compiler Error 
typedef NeutrinoFunctor< VparticleItr, pMapPartpNu > partNuFunctor; 

以下是編譯器錯誤,我從GNU GCC 4.1.2版

ISO C++ forbids declaration of 'NeutrinoFunctor' with no type 

收到看起來並不像我所嘗試是可能的。

+1

看起來你還沒有聲明'NeutrinoFunctor'。雖然與typedefs無關。 – Flexo

+0

您還沒有在任何地方聲明NeutrinoFunctor,編譯器如何知道partNuFunctor應該是什麼類型? – tmpearce

+3

只需說清楚:你可以在typedef中使用typedefs。這不是問題。 –

回答

4

這是不可能的,因爲您在typedef之前沒有聲明NeutrinoFunctor

下面的代碼,使用類型定義內的typedef,是合法的:

#include <string> 
#include <vector> 

template <typename T1, typename T2> struct Foo {}; 

typedef std::vector<int> IntVector; 
typedef std::string String; 

typedef Foo<String, IntVector> Bar; 

int main() { 

    Bar b; 

} 
+0

我有興趣知道原因downvote。如果我的答案有問題,我會很樂意修復它! – juanchopanza

1

有可能typedef另一個typedef(如果這是即使正確verbage),因爲編譯器認爲它只是另一個type。但是,編譯器錯誤是由於它不知道什麼是NeutrinoFunctor