"コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2440: '初期化中' : 'int' から 'point' に変換できません。 コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。

ソース(バグ有り):

#include<iostream>
using namespace std;

struct point
{
int x;
int y; }; int main() {
struct point p=(10,20);
cout << "p = (" << p.x << "," << p.y << ")" << endl;
return 0; }


原因:
構造体の初期化方法に誤りがあります。初期化には()ではなく{}を使用します。

対処:
構造体の初期化には{}を使用します。


ソース(修正済み):

#include<iostream>
using namespace std;

struct point
{
int x;
int y; }; int main() {
struct point p={10,20};
cout << "p = (" << p.x << "," << p.y << ")" << endl;
return 0; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]