Hallo,
ich habe folgendes Problem, wobei ich hier erst einmal den Quelltext gleich angeben werde:
Es gibt eine Basisklasse Base, die eine virtuelle Methode (protected) init hat.
Desweiteren gibt es eine Klasse A, welche alle Methoden von Base (inklusive der virtuellen Methode) init erbt und diese Methode init überschreibt (auch virtuell).
Im Base Konstruktor wird init aufgerufen.
Ich dachte jetzt, da init virtuell ist, somit bei der Instanziierung von A automatisch die Methode A::init aufgerufen wird.
Doch erst einmal die Quellcodes (insg 5 Teile)
– base.h ----------------------------------
#ifndef BASE_H
#define BASE_H
class Base {
public:
Base();
virtual ~Base();
virtual void init();
};
#endif
– base.cpp --------------------------------
#include
#include „base.h“
Base::Base(){
this->init();
}
Base::~Base(){
}
void Base::init(){
cout
class A : public Base {
public:
A();
virtual ~A();
virtual void init();
};
#endif
– a.cpp -----------------------------------
#include
#include „a.h“
A::A() : Base() {
}
A::~A(){
}
void A::init(){
cout
#include
#include „base.h“
#include „a.h“
int main(int argc, char** argv){
cout init();
b->init();
return EXIT_SUCCESS;
}
Die Ausgabe ist dann:
Hello, World!
Base::init()
Base::init()
Base::init()
A::init()
Ich möchte aber gerne folgendes haben:
Base::init()
A::init()
Base::init()
A::init()
Irgendwie hab ich Bohnen auf den Augen (nach 10 Stunden vor dem Rechner auch kein Wunder
)
Hoffe hier weiß jemand Rat.
MfG
Frank