加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读