[C++] Impliziter Konvertierungsoperator von int zu eigener Klasse

Wenn ich mich richtig erinnere, einfach so:

C++:
class xyz
{
    operator int(){...}
};

Keinen Returnwert, trotzdem ein int zurückgeben.

Umgekehrt gibts mehrere Situationen
Einen Konstruktor, der ein int übergeben bekommt, einen =operator mit Parameter int etc.
 
Dankeschön. :)
Ich habe jetzt folgenden Code; wie man sieht, möchte ich eine Klassenstruktur wie in Java erstellen.
C++:
class Object{
public:
	Object(){}
	Object(int i){}; //1
	char* toString(){
		return "Object_instance";
	}
	void print(){
		std::cout<<toString()<<endl;
	}
};
class Integer : public Object {
	int i;
public:
	Integer(int x):i(x){}; //2
	Integer(){}
	operator int(){
		return i;
	}
	char* toString(){
		return "Integer_instance";
	}
//	void print(){
//		std::cout<<toString()<<endl; //3
//	}
};

void print(Object o){
	o.print();
}

int main(int argc, char* argv[])
{
	print(4); //4
	Integer i;
	i = 4;
	i.print(); //5
	Object o = i;
	o.print();
	int j = i;
	std::cin.get();
	return 0;
}

1. Wenn ich bei //4 die print(4)-Funktion aufrufe, wird der Konstruktor von Object (//1) aufgerufen. Leider kann ich nicht auf den Integer-Konstruktor (//2) "umleiten", weil ich den Object-Konstruktor weder löschen noch abstrakt definieren kann.
Wie kann ich es machen, dass hier der Integer-Konstruktor aufgerufen wird?

2. Wieso wird bei //5 nur "Object_instance" ausgegeben, wenn ich die Funktion bei //3 weglasse? Ich dachte, dass die Methode print() von Object innerhalb der Integer-Klasse auf die Integer-Methode toString() zugreift?

|| EDIT: Das 2. Problem habe ich gelöst; man muss in der Object-Klasse die Methode als virtual definieren, dann funktioniert es. ;)

|| EDIT2: Diese Funktion habe ich eingefügt, jetzt ist auch das erste Problem gelöst:
C++:
void print(int i){
    print(Integer(i));
}
 
Zuletzt bearbeitet:
Zurück