我想在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
看起来不像我正在尝试的那样。
答案 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
。