c – 在类模板实例化中携带类型信息

c – 在类模板实例化中携带类型信息,第1张

概述我需要从我用来实例化另一个类的类中访问类型信息. 具体地,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<typena 我需要从我用来实例化另一个类的类中访问类型信息.

具体地,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);}
总结

以上是内存溢出为你收集整理的c – 在类模板实例化中携带类型信息全部内容,希望文章能够帮你解决c – 在类模板实例化中携带类型信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1227832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存