Mam klasę bazową i kilka klas dziedziczących po klasie bazowej ale na potrzeby przykładu niech będzie jedna, klasa A.
Klasa bazowa w konstuktorze przyjmuje referencje do innych obiektów, obiekt tej klasy jest tworzony w funkcji main na samym początku.
int main(int argc, char** argv) {
A a;
Bazowa object(a);
object.start();
return 0;
}
//Bazowa.h
#ifndef BAZOWA_H
#define BAZOWA_H
using namespace std;
class A;
class Bazowa {
public:
Bazowa(A &a);
virtual ~Bazowa();
void start();
private:
A &refA;
};
//Bazowa.cpp
#include "Bazowa.h"
#include "A.h"
Bazowa::Bazowa(A &a) : refA(a) {
}
Bazowa::~Bazowa() {
}
void Bazowa::start() {
refA.hello();
}
//A.h
#ifndef A_H
#define A_H
#include <iostream>
#include "Bazowa.h"
using namespace std;
class A : public Bazowa {
public:
A();
virtual ~A();
void hello();
};
//A.cpp
#include "A.h"
A::A(){
}
A::~A() {
}
void A::hello(){
cout << "KlasaA" << endl;
}
Obiekt klasy bazowej chciałbym stworzyć na samym początku, a następnie tylko korzystać z jego metod w klasach pochodnych.
W klasie bazowej chciałbym też mieć możliwość dostepu do klas pochodnych, ale mam to zapewnione poprzez przekazenie referencji na etapie konstrukcji obiektów.
Jak powinien wyglądać konstruktor klasy A, ponieważ po dziedziczeniu musi on zawierać również argumenty przekazywane do konstruktora klasy Bazowej? Jak zrealizować to w tym przypadku?
Ewentualnie czy istnieje możliwość "wyłączenia dziedziczenia" po konstruktorze klasy Bazowej? Obiekt klasy bazowej chciałbym utworzyć i zainicjować tylko raz, na samym początku (to co robię w funkcji main).