template <typename T>class myClass {};auto p = new myClass<int32_t>;int TSizeOfP = sizeof(??);
所以我想从对象指针获取我在myClass之外设置为int32_t的T.
显然我知道我把它设置为什么所以我可以做= sizeof(int32_t)但我希望能够只声明一次类型而不必遍历我编写sizeof(int32_t)的所有地方,如果我决定改变类型.
我也可以做一些像#define pType int32_t或者使用语句或其他什么的东西,但是如果有办法没有额外的行,我想听听它.
解决方法 您可以编写具有部分特化的模板类,并使用辅助函数来完成它.template <typename T>struct template_parameter_type {};template <typename T,template <typename> class C>struct template_parameter_type<C<T>> { typedef T type;};template <typename T>auto get_size(T*) { return sizeof(typename template_parameter_type<T>::type);}
然后
auto p = new myClass<int32_t>;int TSizeOfP = get_size(p);
LIVE
总结以上是内存溢出为你收集整理的c – 是否可以在模板化类之外获取指定的模板类型?全部内容,希望文章能够帮你解决c – 是否可以在模板化类之外获取指定的模板类型?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)