int *a = new int; エラー
下記をコンパイルすると、'int' 型は 'int *' 型に変換できない(関数 main() )
とエラーが出てしまいました。 何がおかしいのでしょうか ?
初歩的な間違いをしていると思いますが、アドバイスお願いします。
#include<iostream>
#include<stdlib>
#include<ctime>
using namespace std;
void main(void)
{
int *a = new int;
a=rand();
cout<<a<<endl;
delete a;
}
回答(4件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
直すべきところは他の回答者さんが指摘されているので理由の方を書いておきますね.
a=rand();
コンパイラがエラーをはいているのはこの部分です.
aはint *型変数です,これにたいしてrand()の返り値の型はint型です.
c++言語の暗黙の型変換では,int型からint *型変数には型変換(キャスト)できないので
コンパイラはエラーをはいているわけです.
よくあるミスです.
代入を行うときは,左辺値(ここではa)の型が何であるかと
右辺の式の評価値が何型であるかを意識して書くと良いと思いますよ.
この回答へのお礼
良くわかりました。ありがとうございます。
No.1ベストアンサー20pt
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(void)
{
srand ( time(NULL));
int *a = new int;
*a=rand();
cout<<*a<<endl;
delete a;
return 0;
}
/*
多分こうだと思う。
想像以上に乱数の精度が悪いような気がする。
*/
この回答への補足
質問者です。
>int *a = new int;
>a=rand();
を
int *a = new int;
*a = rand();
にしたら解決できました。 初心者なのでnewとはなんたるかを
いろいろ試している最中です。
なぜこうなるのか、ご存知でしたら教えてください。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











