大佬教程收集整理的这篇文章主要介绍了c – 根据模板变量类型执行不同的方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如
template <class T> struct Jam { Jam(T *var) { if (typEID(var) == typEID(std::string*) *var = "Hello!"; else if (typEID(var) == typEID(int*) *var = 25; } };
当我尝试使用该代码,我收到从const char *到int的错误无效转换.我怀疑这是因为编译器将模板扩展为单独的函数,当我指定一个新的结构实例时,会发出Jam< std :: String>(& setmE);它检测到var * = 25语句并拒绝编译.
有没有正确的方法来做到这一点?也许与宏观卫士?谢谢.
template <class T> struct Jam { Jam(std::string* var) { *var = "Hello!"; } Jam(int* var) { *var = 25; } };
除非你想专门用于实例化Jam的T型.在这种情况下你会做:
template<> struct Jam<std::string> { Jam(std::string* var) { *var = "Hello!"; } }; template<> struct Jam<int> { Jam(int* var) { *var = 25; } }; template<typename T> struct Jam { Jam(T* var) { // every other type } };
以上是大佬教程为你收集整理的c – 根据模板变量类型执行不同的方法全部内容,希望文章能够帮你解决c – 根据模板变量类型执行不同的方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。