2012-06-21 2 views
0

Я хочу иметь typedef внутри в typedef и удивляться, если это возможно?typedefs внутри 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

Просто, чтобы прояснить: вы * можете * использовать typedefs в пределах typedef. Здесь не проблема. –

ответ

4

Невозможно, потому что у вас нет объявления 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.

Смежные вопросы