2016-09-11 3 views
-1

Wenn ich ein Objekt von Example (class) erstelle, möchte ich ihm einen int-Wert mit dem Gleichheitsoperator zuweisen, um zu sehen, wie das Überladen von Operatoren funktioniert.Operator = Überladen mit anderen Parametern in C++?

Aber ich kann es nicht mit dem folgenden Code kompilieren:

Klasse:

Example& Example::operator=(int number) 
{ 
    this->number = number; 
    return *this; 
} 

Haupt:

Example x1 = 10; 
+2

Sie verwenden den Zuweisungsoperator nicht in Ihrem Code. Aber poste ein [mcve]. – juanchopanza

+0

Welchen Fehler bekommen Sie? –

+0

Fehler: Konvertierung von int in Beispiel nicht möglich. Ich verwende den Visual C++ - Compiler übrigens – Topper

Antwort

1

Trotz allem, was es so aussieht, ist nicht eine Aufgabe, ihres eine Initialisierung. Es ruft den Konstruktor und nicht den Zuweisungsoperator auf.

Versuchen Sie folgendes:

Example x1; // initialize 
x1 = 10; // assign 

In Ihrem Beispiel ist die Suche nach einem Konstruktor, die ein int als Parameter nimmt.

1

Die Linie

Example x1 = 10; 

ist identisch mit

Example x1(10); 

oder

Example x1 = Example(10); 

Sie ruft den Konstruktor, anstelle der Zuweisungsoperator. Offensichtlich erfordert es einen Konstruktor wie:

Example(const int& n) : number(n) {}