dynamische initialisieung von klassen ?



  • Hallo,

    ich habe folgendes Problem:
    Ich habe 2 Klassen programmiert (Matrizen und qMatrizen (für quadratische Matrizen) ) !
    Die Klasse qMatrizen erbt alle (public) Funktionen der Klasse Matrizen und hat noch weitere Funktionen.
    Das Problem ist jetzt, dass ich eine dynamische Initialisierung brauche:

    Die Matrizen "A" bzw. "B" sollen endweder als qMatrizen oder als (einfache) Matrizen initialisiert werden.
    Natürlich könnte ich beide als qMatrizen initialisieren, aber dann wäre die Vererbung sinnlos und ich bräuchte nur eine Klasse zu definieren, was das Thema verfehlt.

    Dieser Code funktioniert nicht... Mit "extern" komme ich auch nicht weiter

    [...]
    if(Zeilen==Spalten)
    	{
    		qMatrizen A(Zeilen);
    	}
    	else
    	{
    		Matrizen A(Zeilen,Spalten);
    	}
    
    	[...]
    
    	if(Zeilen==Spalten)
    	{
    		qMatrizen B(Zeilen);
    	}
    	else
    	{
    		Matrizen B(Zeilen,Spalten);
    	}
    

    (edit: Konstruktoren sind für beide Klassen korrekt !)

    Gibt es eine Möglichkeit globale Variablen oder Klassen IN EINEM BLOCK zu definieren.

    Ich danke schon im Voraus für eure Antworten !
    P.S.: Bin ein NOOB, was C++ angeht, also seid bitte nicht so hart !



  • Warum machst Du dafür zwei Klassen? Es reicht doch eine mit 2 Konstruktoren!

    class Matrix
    {
      int zeilen_;
      int spalten_;
    public:
      Matrix(int m) : zeilen_(m), spalten_(m) {} // quadratisch
      Matrix(int m, int n) : zeilen_(m), spalten_(n) {}
    
      bool IstQuadratisch() {return zeilen_ == spalten_;}
    }
    

    Und sollte das nicht passen, weil sich Methoden für quadratische und nicht-quadratische Matrizen unterscheiden (sollen/müssen), dann würde ich die quadratische von der nicht-quadratischen Matrixklasse ableiten und mit virtuellen Methoden arbeiten.



  • ... weil ich "unbedingt" vererben will/muss ! Vielen Dank für Deine Antwort !

    die Matrizen, die nicht quadratisch sind sollen weniger Funktionen haben, als die quadr. Matrizen.

    Ich habe jetzt einfach einfach im main 4 Klassen deklariert und für beide Matrizen eine weitere Variable angelegt. "bool isAq; bool isBq;"
    Das kostet zwar unnötigen Quelltext, damit funktioniert es aber.

    Würde mich trotzdem freuen, falls mir jemand eine elegantere Lösung verrät.

    edit:
    das ist genau das gleiche nur in der Klasse.
    Danke für deine Antwort.
    --> Erledigt !


Anmelden zum Antworten