0

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

看起来我正在尝试的事情是不可能的。

4

2 回答 2

4

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

以下代码在 typedefs 中使用 typedefs 是合法的:

#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;

}
于 2012-06-21T16:12:43.287 回答
1

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

于 2012-06-21T16:14:46.230 回答