0

変数を一般的な数値型または int として初期化し、その型を double などに変更する方法はありますか?

TYPE x = 4;
// commands changing its type
here it(variable x) became double.

私はそれが奇妙であることを知っています。

変数は同じ名前でなければなりません。

4

2 に答える 2

10

いいえ。C++ は静的に型付けされた言語です。変数を宣言すると型が固定されます。

ユニオンを使用して説明したことを行うこともできますが、細心の注意が必要です。

union DoubleInt
{
  int i;
  double d;
};

DoubleInt X;
X.i = 4;

// ... whatever

X.d = X.i;
X.d += 0.25;

しかし、労働組合は、ビットパックを切望している場合の賢明なオプションにすぎません。double または int として動作できるクラスを作成することもできますが、実際には、あなたが話していることは、C++ の方法で考えているようには聞こえません。

最後に、boost::variantはあなたが望むことをするでしょうか?

于 2013-03-10T09:16:35.370 に答える
2

変数の型を変更することはできませんが、さまざまな型の変数を表現できる型を定義できます。これは一般にバリアントと呼ばれます。次のようなコードを記述できるBoost.Variantを取得します。

boost::variant<int, double> t_either_int_or_double;

t_either_int_or_double = 1;

// now it is "int"
assert(boost::get<int>(t_either_int_or_double);

t_either_int_or_double = 1.0;

// now it is "double"
assert(boost::get<double>(t_either_int_or_double);
于 2013-03-10T10:09:12.983 に答える