c ++模板转换

Ste*_*eve 3 c++ templates

我在如何投射模板方面有点迷失.我有一个函数foo,它接受一个类型的参数ParamVector<double>*.我想传入一个ParamVector<float>*,我无法弄清楚如何为我的ParamVector课程重载强制转换操作符,谷歌并没有帮助我那么多.有没有人有如何做到这一点的例子?谢谢.

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

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
Run Code Online (Sandbox Code Playgroud)

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

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

bay*_*yda 7

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

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;
Run Code Online (Sandbox Code Playgroud)

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