基本上,我想做的是这样的事情:
template<typename x,typename y,typename z>
struct SomeTemplateClass {
typedef x myType;
};
...然后
SomeTemplateClass<LongVariableNames,ILikePie,AndCheese> cheese;
cheese.myType i;
因此i
的类型为LongVariableNames
。
我知道做这样的事情可能是不好的做法,但我只是想知道。做这样的事最简单的方法是什么?
我的意思是,应该可以在编译时轻松解决这个问题,因为强大的静态类型等等。如typeof()
那样sizeof()
就好了。
答案 0 :(得分:5)
通常情况如下:
typedef SomeTemplateClass<LongVariableNames,ILikePie,AndCheese> foodType;
foodType cheese;
foodType::myType i;
在C ++ 11中,您也可以使用decltype(cheese)::myType
,但这非常难看。