编辑:添加一些代码,抱歉,我是一个白痴,并没有很好地说出原始问题;
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模板投射所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)