Ich versuche, zwei einfache Klassen zu erstellen, aber dieser Code wird aus irgendeinem Grund nicht kompiliert. Es heißt, ich rufe point :: point ohne Argumente auf, aber die einzige Zeit, in der ich point :: point anrufe, ist in der Hauptfunktion, und ich rufe sie dort mit Argumenten auf.Warum ruft dieser Konstruktor einen anderen ohne Argumente auf?
Beim Debuggen fand ich den Konstruktor für string_two_points, der den Konstruktor für Punkt aufruft.
#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' hat' Punkt x; 'als Mitglied. Wenn Sie also ein 'string_two_points' konstruieren, wird' x' konstruiert, was den Aufruf von 'x's Konstruktor beinhaltet. –
Sie müssen uns sagen, wo der Compiler Beschwerde auftritt. ctors werden oft aus Gründen aufgerufen, die Sie nicht explizit programmiert haben. Sie zeigen zwei Punkte in Punkt. Der Compiler hat wahrscheinlich mehrere andere zur Verfügung gestellt, einschließlich eines Standard-Ctor. –
@ DOUGLASO.MOEN Compiler stellt keinen Standardkonstruktor zur Verfügung, wenn es einen vom Benutzer bereitgestellten Konstruktor gibt –