次のコード スクリプトが示すように、さまざまなクラスの変換に関連する質問があります。
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;
}
上記のコードでは、仕事をするために 3 つの方法を試しています。最初の方法のみが機能します。static_cast
anddynamic_cast
を直接変換に使用できないようです。変換タスクを実行する他の方法があるかどうか疑問に思っていました。