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;

これが私がgnugccバージョン4.1.2から受け取ったコンパイラエラーです

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

私が試みていることは可能ではないようです。

4

2 に答える 2

4

NeutrinoFunctortypedefの前に の宣言がないため、不可能です。

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;

}
于 2012-06-21T16:12:43.287 に答える
1

typedefコンパイラはそれが単なる別のものであると考えているため、別の可能性がありますtypedef(それが正しい言い回しでさえある場合)type。ただし、コンパイラエラーは、何が何であるかがわからないという事実によるものですNeutrinoFunctor

于 2012-06-21T16:14:46.230 に答える