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