typedef中的typedef

时间:2012-06-21 16:10:03

标签: c++

我想在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

看起来不像我正在尝试的那样。

2 个答案:

答案 0 :(得分:4)

这是不可能的,因为你在typedef之前没有声明NeutrinoFunctor

以下代码在typedef中使用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;

}

答案 1 :(得分:1)

有可能typedef另一个typedef(如果这是正确的verbage),因为编译器认为它只是另一个type。但是,您的编译器错误是由于它不知道什么是NeutrinoFunctor