我有一个与转换不同类有关的问题,如下代码脚本所示:
template<typename E>
class Coordinate 
{
public:
    E x_;
    E y_;
    Coordinate(E x, E y):x_(x),y_(y) {};
    Coordinate():x_(0),y_(0) {};
    ~Coordinate() {};
};
typedef vector<Coordinate<float> > Cordfloat;
typedef vector<Coordinate<double> > Corddouble;
int main()
{
    Corddouble myarray;
    Coordinate<float> value(1.2,1.3);
    // myarray.push_back(value);  // failed!!!
    // Option 1
    Coordinate<double> temp;
    temp.x_ = static_cast<double>(value.x_);
    temp.y_ = static_cast<double>(value.y_);
    myarray.push_back(temp);
    // Option 2
    // myarray.push_back(static_cast<Coordinate<double> >(value)); // failed!!!
    // Option 3
    // myarray.push_back(dynamic_cast<Coordinate<double> >(value)); // failed!!!
    return 0;
}
在上面的代码中,我尝试了三种方法来完成这项工作。只有第一种方法有效。看来我不能直接使用static_castanddynamic_cast进行转换。我想知道是否还有其他方法可以执行转换任务。