c模板投射

c模板投射,第1张

概述我在如何投射模板方面有点迷失.我有一个函数foo,它接受ParamVector类型的参数< double> *.我想传入一个ParamVector< float> *,我无法弄清楚如何为我的ParamVector类重载转换 *** 作符,而Google并没有帮助我那么多.有没有人有如何做到这一点的例子?谢谢. 编辑:添加一些代码,抱歉,我是一个白痴,并没有很好地说出原始问题; template<class 我在如何投射模板方面有点迷失.我有一个函数foo,它接受ParamVector类型的参数< double> *.我想传入一个ParamVector< float> *,我无法弄清楚如何为我的ParamVector类重载转换 *** 作符,而Google并没有帮助我那么多.有没有人有如何做到这一点的例子?谢谢.

编辑:添加一些代码,抱歉,我是一个白痴,并没有很好地说出原始问题;

template<class T> class ParamVector {public:    vector <T> gnome;    vector <T> data_params;}template<class T> class ParamVectorConsumer{ public: ParamVector<T> test;}ParamVector<float> tester;ParamVectorConsumer<double> cons;cons.ParamVector = tester

将无法编译.我想知道如何编写它以便我可以将float版本的测试器转换为ParamVector double.谢谢

EDIT2:施法是错误的.我不介意编写额外的代码,我只需要知道如何让编译器接受它,以便我可以编写某种转换代码.

解决方法 我不确定,但也许你需要这样的东西:

template< typename TypeT >struct ParamVector{    template < typename NewTypeT >    operator ParamVector< NewTypeT >()    {        ParamVector< NewTypeT > result;        // do some converion things        return result;    }    template< typename NewTypeT >    ParamVector( const ParamVector< NewTypeT > &rhs )    {        // convert    }    template < typename NewTypeT >    ParamVector& operator=( const ParamVector< NewTypeT > &rhs )    {        // do some conversion thigns        return *this;    }};ParamVector< double > d1;ParamVector< float > f1;f1 = d1;

您可以选择使用转换运算符或运算符= – 我在我的示例中提供了两者.

总结

以上是内存溢出为你收集整理的c模板投射全部内容,希望文章能够帮你解决c模板投射所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1222121.html

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

发表评论

登录后才能评论

评论列表(0条)

保存