🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #86

Referenzen in Basisklassen initialisieren?

#86
From: Andre Pareis
Date: Fri, 18 Dec 1992 13:31
82 lines
2416 bytes

Ich habe in einer Library ungefaehr so etwas geschrieben:


class Window
{
protected:
	Window( View& workArea );


private:
	View& root;
};


im .cc file:

Window::Window( View& workArea ): root(workArea)
{
}


Dann gibt es noch abgeleitete Klassen, die alle virtual public
zu Window sind:

class WinWithMover: virtual public Window
{
protected:
	WinWithMover();		// hier ex. kein cons. mit einem View&

};


class WinWithName:  virtual public Window
{
protected:
	WinWithName( const char * );

};


===========================================

Das eigentliche darzustellende Fenster erbt dann von
meheren dieser abgeleteten Windows:

class MyWindow: public WinWithMover, public WinWithName
{
public:
	MyWindow( View& workArea, const char *name ):
		Window(workArea), WinWithName(name) {}

};


Das Problem ist, wenn ich nur die Klassen WinWith* compiliere,
erhalte ich die Fehlermeldung, dass die Klasse Window keinen
Defaultinitialisierer hat. Also schreibe ich einen:

protected: Window::Window();

diesen erklaere ich dann in den beiden direkt abgeleiteten Klassen
als private. Compiliere ich jetzt die Klasse Window, erhalte ich
die Warnung, dass root durch den Defaultkonstruktor nicht initiali-
siert wird. Ich weiss aber genau, dass dieser Window::Window()
Konstruktor nie benutzt wird, der er in jeder abgeleiteten Klasse
private wird.

Also: Wie kann ich das eben beschriebene Verhalten umgehen?
	( Ich moechte wenn es geht KEINE Pointer benutzen )

Danke,

-- 
			+-----------------------------------------------+
			| Andr'e Pareis |  Techn. University of Berlin	|
			|-----------------------------------------------|
			| e-mail:    pareis@cs.tu-berlin.de		|
			|	     subiaagb@w350zrz.zrz.tu-berlin.de	|
			| NeXT-mail: subiaagb@w271zrz.zrz.tu-berlin.de  |
			+-----------------------------------------------+
Technical Details
Message-ID: <1gsjrvINNrfu@mailgzrz.TU-Berlin.DE>
Path: arc1-ca.pugleaf.net!sparky!uunet!math.fu-berlin.de!mailgzrz.TU-Berlin.DE!w350zrz!subiaagb

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!math.fu-berlin.de!mailgzrz.TU-Berlin.DE!w350zrz!subiaagb
From: subiaagb@w350zrz.zrz.tu-berlin.de (Andre Pareis)
Newsgroups: de.comp.lang.c++
Subject: Referenzen in Basisklassen initialisieren?
Date: 18 Dec 1992 13:31:42 GMT
Organization: Dept. of CS, Techn. University of Berlin
Lines: 82
Sender: subiaagb@w350zrz (Andre Pareis)
Distribution: world
Message-ID: <1gsjrvINNrfu@mailgzrz.TU-Berlin.DE>
Reply-To: pareis@cs.tu-berlin.de
NNTP-Posting-Host: w350zrz.zrz.tu-berlin.de