2つのシンプルなクラスを作成しようとしていますが、何らかの理由でこのコードがコンパイルされません。それは私が引数なしでpoint :: pointを呼び出していると言っているが、私がpoint :: pointと呼ぶ唯一の時間はmain関数にあり、そこに引数で呼び出す。なぜこのコンストラクタは引数なしで別のコンストラクタを呼び出しますか?
デバッグ時に、ポイントのコンストラクタを呼び出すstring_two_pointsのコンストラクタが見つかりました。
#include <iostream>
#include <string>
using namespace std;
class point{
public:
int x;
int y;
point(int x, int y): x(x),y(y){};
point(const point & c): x(c.x), y(c.y) {};
};
class string_two_points{
public:
string type;
point x;
point y;
string_two_points(string type, point & xc):type(type){
x=xc;
};
string_two_points(string type, point & xc, point & yc):type(type){
x=xc;
y=yc;
};
};
int main(){
point a = point(2,3);
point b = point(3,4);
string_two_points x = string_two_points(string("abc"),a,b);
return 0;
}
:
あなたは各コンストラクタのメンバを初期化することによって固定することができます。したがって、 'string_two_points'を構築すると、' x'のコンストラクタを呼び出すことを含む 'x'を構築します。 –
コンパイラの苦情がどこで発生するか教えてください。 ctorsは、明示的にコーディングしていないために呼び出されることがよくあります。あなたは2つのポイントを表示します。コンパイラはおそらくデフォルトのctorを含むいくつかのものを提供しています。 –
@ DOUGLASO.MOENコンパイラは、ユーザが提供するコンストラクタがある場合、デフォルトのコンストラクタを提供しません –