-4

非常に単純ですが、エラーを削除できません。複素変数に整数値を格納したい。

int int2 =2;
comp *cal = int2;

ありがとう

4

1 に答える 1

2

標準の複素数を使用している場合 (つまりcomp、 のエイリアスstd::complex<something>):

comp cal = int2;

標準の複合型でない場合compは、それがどのように定義されているかを確認する必要があります。それがどのように機能するかを推測する方法はありません。

更新:あなたのコメントについて:それはカスタム集計タイプでありQ、実際の部分であると仮定しているため:

comp cal = {0, int2};

ただし、代わりに標準型の使用を検討する必要があります。

あなたのコメントの残りの部分について: どうしてポインタを使わなければならないのですか? それは非常識です。しかし、本当に必要な場合:

comp cal_ = {0, int2};
comp *cal = &cal_;

または、何らかの理由で動的割り当てが必要な場合 (ほとんどの場合必要ありません。必要な場合は、生のポインターではなくスマートポインターを使用する必要があります):

comp *cal = new comp{0, int2};
// and don't forget to delete it when you've finished with it
delete cal;

または、2011 年より前の言語に固執している場合:

comp *cal = new comp;
cal->I = 0;
cal->Q = int2;

しかし、繰り返しますが、何をしなければならないと考えていても、ここにポインターが必要ないことはほぼ確実です。

于 2013-06-14T10:52:37.850 に答える