Probleme mit abgeleiteten Klassen
Hi,
ich habe ein Problem bei dem ich nicht weiter komme. Ich möchte Abgeleitete Klassen für einander austauschen.
Sprich ich habe zwei Basisklassen Document und Mask. Von denen habe ich die Klassen BookDocument, BookMask,
RecipeDocument, RecipeMask abgeleitet.
In meinem Programm möchte ich nach belieben die Abgeleiteten Klassen für einander austauschen.
Code:
class Document{};
class BookDocument: public Document{};
class RecipeDocument: public Document{};
class Mask{};
class BookMask: public Mask{};
class RecipeMask: public Mask{};
if(test == "recipe"){
document = static_cast<RecipeDocument *>(document);
document = new RecipeDocument;
mask = static_cast<RecipeMask *>(mask);
mask = new RecipeMask(document);
}
else if(test == "book"){
document = static_cast<BookDocument *>(document);
document = new BookDocument;
mask = static_cast<BookMask *>(mask);
mask = new BookMask(document);
}
Zum einen bekomme ich Probleme bei der Vorwärts Deklaration,
Code:
class BookDocument: public Document{
...
};
class Document;
Zum Anderen hat der static_cast nicht das gebracht was ich wollte.
Code:
document = static_cast<RecipeDocument *>(document);
Und ich muss in jeder Methode der Abgeleiteten Klasse die Methode der Basis Klasse aufrufen:
Code:
void BookDocument::init(){
Document::init();
}
Was auch nicht gerade schön ist.
Gern kann ich auch den Quellcode hinauf laden. Doch wollte ich es erst einmal übersichtlich belassen.