Seite 1 von 2
Klasse string vererben
Verfasst: So Jun 28, 2009 5:24 pm
von cloidnerux
Also, ich habe für ein kleines OpenGL objekt mir eine klasse geschriben mit der men einen String ausgeben soll.
Weil ich nicht immer aufrufe wie
haben wollte, habe ich kurzerhand die Klasse string Vererbt.
Compiler meldet keine Fehler, doch wenn ich versuche über
Meldet er mir immer:
error: no match for 'operator=' in 'meinObjekt = "Hallo Welt!"
Woran kann das liegen?
MfG cloidnerux
Re: Klasse string vererben
Verfasst: So Jun 28, 2009 5:34 pm
von nufan
Kurz: Zuweisungsoperator wird nicht vererbt.
Für eine Lösung wäre die Klasse nicht schlecht

Re: Klasse string vererben
Verfasst: So Jun 28, 2009 8:06 pm
von cloidnerux
Für eine Lösung wäre die Klasse nicht schlecht

Ich nehme mal an meine:
Code: Alles auswählen
class glString : public std::string
{
private:
unsigned short posX, posY;
HFONT font, oldfont;
GLuint base;
public:
glString();
glString(int positionX, int positionY);
glString(int widht, int height, std::string fontName);
glString(std::string fontName);
~glString();
void Init();
void Draw();
};
Ist es überhaupt möglich bestimmte Funktionen und Operatorüberladungen nicht vererbbar zu machen?
Re: Klasse string vererben
Verfasst: So Jun 28, 2009 8:57 pm
von nufan
Sorry, so gut kenn ich mich leider auch nicht aus
Ich würde Folgendes machen:
In glString eine Instanz von string. Den Zuweisungsoperator für glString so überladen, dass der übergebene Text direkt an die string-Instanz weitergegeben wird.
Re: Klasse string vererben
Verfasst: Mo Jun 29, 2009 1:55 pm
von Dirty Oerti
Äh...ich bin mir nicht total sicher, aber ich denke so in der Art müsste es doch gehen...
Code: Alles auswählen
class dings
{
// blabla
public:
dings operator= (char * nur_text);
dings operator= (dings dasda)
}
dings dings::operator= (char *nur_text)
{
this.text(nur_text);
return this;
}
*edit* Achso, jetzt versteh ich das Problem erst^^ Warum muss es denn ein Erbe von string sein? Wäre es nicht sowieso klüger, einfach nur ein string als Memberelement deiner Klasse zu nehmen (wie dani93 schon meinte

) ?
Re: Klasse string vererben
Verfasst: Mo Jun 29, 2009 3:55 pm
von cloidnerux
*edit* Achso, jetzt versteh ich das Problem erst^^ Warum muss es denn ein Erbe von string sein? Wäre es nicht sowieso klüger, einfach nur ein string als Memberelement deiner Klasse zu nehmen (wie dani93 schon meinte

) ?
Im grunde genommen ja, aber dann müsste man sich entweder selber die Operatoren überladen oder Funktionen schreiben und da hab ich mir gedacht. "Warum das ganze, wenn ich das doch alles von string erben könnte"
Re: Klasse string vererben
Verfasst: Mo Jun 29, 2009 4:00 pm
von Dirty Oerti
cloidnerux hat geschrieben:*edit* Achso, jetzt versteh ich das Problem erst^^ Warum muss es denn ein Erbe von string sein? Wäre es nicht sowieso klüger, einfach nur ein string als Memberelement deiner Klasse zu nehmen (wie dani93 schon meinte

) ?
Im grunde genommen ja, aber dann müsste man sich entweder selber die Operatoren überladen oder Funktionen schreiben und da hab ich mir gedacht. "Warum das ganze, wenn ich das doch alles von string erben könnte"
Naja, eigentlich müsste das schon gehen.
Aber du willst ja dann "zusätzliche" Funktionalität dazu bekommen, und dazu wirst du wissen müssen, wie die Klasse String aufgabaut ist, um eben auf die Interna von string zugreifen zu können.
Re: Klasse string vererben
Verfasst: Mo Jun 29, 2009 4:15 pm
von cloidnerux
Aber du willst ja dann "zusätzliche" Funktionalität dazu bekommen, und dazu wirst du wissen müssen, wie die Klasse String aufgabaut ist, um eben auf die Interna von string zugreifen zu können.
Naja, ich wil nicht direkt auf den string beziehende Funktionen dazu bekommen.
Ich habe halt einen eigenen Konstruktor und die Funktion Draw um es über OpenGL auszugeben.
Das einzige Problem was ich bekommen habe war, das der Operator = nicht mit Übernommen wurde.
Ich habe mir mal die Datei "string" angesehen, da war nur SEHR viel für mich unverständlicher Code drinn.
Re: Klasse string vererben
Verfasst: Mo Jun 29, 2009 5:08 pm
von Kerli
cloidnerux hat geschrieben:Ist es überhaupt möglich bestimmte Funktionen und Operatorüberladungen nicht vererbbar zu machen?
Nein, nur der = Operator wird nach dem Standard nie vererbt. Versuch doch einmal zb den += Operator zu verwenden, das sollte problemlos gehen...
Re: Klasse string vererben
Verfasst: Mo Jun 29, 2009 5:10 pm
von cloidnerux
Nein, nur der = Operator wird nach dem Standard nie vererbt. Versuch doch einmal zb den += Operator zu verwenden, das sollte problemlos gehen...
Ah, += macht er anstantslos, alos muss ich nur den = Operator neu implementieren