Klasse Konstruktor-Argumente C++
Erstelle ich ein pair1-Klasse für die x-und y kartesische Koordinatensystem. x und y sind verdoppelt. Muss ich haben 3-Konstruktoren.
- Keine Argumente, standardmäßig x und y auf null.
- Einem argument x zugewiesen und standardmäßig y auf null.
- Eine arugeument defaults x auf null und weist y. Ich bin mir nicht sicher, ob ich bin einrichten die Klasse Recht. Ich bekomme den folgenden Fehler:
pair1::pair1(double)
undpair1::pair1(double)
können nicht überladen werden.
Meiner Klasse:
class pair1
{
private:
double x;
double y;
public:
pair1(){ x = 0.0, y = 0.0; }
pair1( double a ){ x = a; y =0.0; }
pair1(double b){ x = 0.0; y = b; }
};
Sie haben zwei ctors mit der gleichen Signatur. Wenn ich den Anruf pair1(3.1), die man ausführen soll?
Wie wärs mit einem einfachen
Wie wärs mit einem einfachen
std::pair<double, double>
? Sie konnte nur initialisieren, wie x(1.2, 0)
oder x(0, 4.3)
oder x()
. Das wäre viel effizienter als Ihre code (z.B. warum bist du nicht mit Initialisierungen?).InformationsquelleAutor Stephen Rogers | 2011-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach
Das ist ein problem. Wie wissen Sie, wenn man nur ein parameter, welcher von den beiden gemeint ist, genannt zu werden? Das ist warum erhalten Sie einen Kompilierungsfehler.
Statt - verwenden Sie die Standard-Konstruktor (der ohne Parameter), full-Konstruktor (der mit beiden), wenn nötig, und
SetX()
undSetY()
um die X-und Y getrennt, und machen Unterscheidung, indem der name der Funktion.InformationsquelleAutor littleadv
Das problem ist, dass der compiler hat keine Möglichkeit zu unterscheiden,
und
In der Tat, Sie sind die gleiche Sache, außer für den Namen des Parameters. Zum Beispiel:
Dies wird als mehrdeutig zu überladen.
Ja. Die meisten intuitiv, was zu tun wäre, um eine Standard-Konstruktor initialisiert die beiden Werte auf null, wie Sie getan haben, und geben Sie einen Konstruktor, der zwei Parameter und initialisiert die beiden Werte.
InformationsquelleAutor Maxpm
Diese sind genau die gleichen Konstruktor. Verschiedene parameter name macht keinen Unterschied. Alles, was wichtig ist für überlastung ist, die Typ(en) und Anzahl von Arten, und Ihre Bestellung.
InformationsquelleAutor Nawaz
Ich bin mir nicht sicher, dass der Standard-Argumente, außer für die (0,0) Fall von nutzen ist, sondern so etwas wie das funktionieren könnte:
Verwenden:
InformationsquelleAutor molbdnilo