c – 在类模板实例化中携带类型信息
发布时间:2020-12-16 07:13:35 所属栏目:百科 来源:网络整理
导读:我需要从我用来实例化另一个类的类中访问类型信息. 具体地,void Beta T :: do_something()需要接受用于实例化类Alpha W,S的类型W,S的参数. templatetypename W,S class Alpha {public: using carry_W = W; using carry_S = S;};templatetypename T class Bet
我需要从我用来实例化另一个类的类中访问类型信息.
具体地,void Beta< T> :: do_something()需要接受用于实例化类Alpha< W,S>的类型W,S的参数. template<typename W,S> class Alpha { public: using carry_W = W; using carry_S = S; }; template<typename T> class Beta {}; template<typename T> void Beta<T>::do_something(typename T::carry_W p1,typename T::carry_S p2) {} Beta<Alpha<int,double>> b; 上面的解决方案工作正常,但有没有其他方法来做这个没有别名作为类成员的类型?这样做有更“C”的方式吗? 解决方法
您可以创建仅包含前向声明和部分特化的类模板.
#include <iostream> using namespace std; template<typename W,typename S> class Alpha { }; template<typename> class Beta; template<typename W,typename S,template<typename,typename> class T> class Beta<T<W,S>> { public: void do_something(W w,S s) { cout << w << "," << s << 'n'; } }; int main() { Beta<Alpha<int,double>> b; b.do_something(0,0.0); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |