Konstruktor der Basisklasse aufrufen



  • Hallo,

    kann ich einen Konstruktor der Basisklasse aufrufen? Ich meine im Konstruktor finden ja meist die ganzen Initialisierungen statt, die ja auch in der abgeleitete Klasse aufgerufen werden müssen. Kann ich in einer abgeleiteten Klassen auf den Basiskonstruktor zugreifen?


  • Mod

    Ja. Ruf ihn in der Initialisierungsliste mit den nötigen Argumenten auf. Ansonsten wird sowieso automatisch der Standardkonstruktor der Basisklasse aufgerufen.



  • Derived::Derived( int data_basis, int data_derived ):
    Base( data_basis ), derived_member( data_derived )
    {
    }
    

    Und wenn du ihn nicht angibst und die Basis keinen Standardkonstruktor hat, dann bekommst einen Fehler;-)

    Lg freeG



  • danke ihr habt mir sehr geholfen.



  • Meine Klasse hat folgende Form

    class LocalSearch :
    	public RectilinearTransducer
    {
    public:
    	/**
    	* constructor
    	* \param nrOfPistonsX, nrOfPistonsY number of pistons in x and y direction
    	* \param distOfPistonsX, distOfPistonsY distance between the center of two pisten elements [points of grid]
    	* \param s lenght in x direction of piston element in meter
    	* \param l lenght in y direction of piston element in meter
    	* \param lambda wavelenght in 1/meter
    	*/
    	localSearch(int nrOfPistonsX,int nrOfPistonsY,int distOfPistonsX,int distOfPistonsY,float s,float l,float lambda):
    	RectilinearTransducer(nrOfPistonsX,nrOfPistonsY,distOfPistonsX,distOfPistonsY,s,l,lambda)
    	{
    	}
    

    Der Konstruktor der Basisklasse RectilinearTransducer existiert. Leider wirft mein visStudio folgende Fehlermeldung:

    1>c:\projects\visual studio 2008\ultrasound\ultrasound\localsearch.h(16) : error C2590: "localSearch": Nur ein Konstruktor kann eine Basis-/Member-Initialisiererliste enthalten.

    Kann mir da jemand bitte weiterhelfen?

    mfG Kriz



  • kann den Beitrag leider nicht löschen.

    Funktioniert alles wie es oben erklärt wurde. Hab nur Klein-/Großschreibschwäche wie sich zeigte. Der Konstruktorname war falsch.


Anmelden zum Antworten