c模板投射
发布时间:2020-12-16 10:41:50 所属栏目:百科 来源:网络整理
导读:我在如何投射模板方面有点迷失.我有一个函数foo,它接受ParamVector类型的参数 double *.我想传入一个ParamVector float *,我无法弄清楚如何为我的ParamVector类重载转换操作符,而Google并没有帮助我那么多.有没有人有如何做到这一点的例子?谢谢. 编辑:添加
我在如何投射模板方面有点迷失.我有一个函数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; 您可以选择使用转换运算符或运算符= – 我在我的示例中提供了两者. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |