我試圖創建兩個簡單的類,但是由於某些原因,此代碼不能編譯。這是說我沒有參數調用point :: point,但是我唯一一次調用point :: point是在主函數中,並且我在那裏調用它。爲什麼這個構造函數調用另一個沒有參數?
調試時,我發現它是string_two_points的構造函數,它正在調用point的構造函數。
#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;'作爲成員。所以當你構造一個'string_two_points'時,它會構造'x',它涉及到調用'x'的構造函數。 –
您需要告訴我們編譯器投訴發生在哪裏。因爲你沒有明確編碼的原因通常會調用ctors。你展示了兩個點。編譯器可能已經提供了其他幾個,包括默認的ctor。 –
@ DOUGLASO.MOEN編譯器不提供默認的構造函數,如果有用戶提供的構造函數 –