Dziedziczenie konstruktora z klasy bazowej w klasach pochodnych

0

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).

1

jakiś dziwny mutant, podaj praktyczny use case

0

Czemu mutant :D?

Ogólnie potrzebuję mieć dostęp z klasy bazowej do klas pochodnych, a w klasach pochodnych chciałbym móc czasem wywołać metodę z klasy bazowej.

Jakiś praktyczy use case. No to np. coś takiego:
Każda z klas pochodnych jest odpowiedzialna za otrzymywanie danych z jakiegoś czujnika i implementuje metodę odbierającą te dane.
Mam też jakąś klasę, która te dane przechowuje (tworzę sobie obiekt klasy która przechowuje te dane w odpowiedniej klasie pochodnej).
No i teraz mam klasę bazową w której chciałbym wyłuskać sobie te dane które odebrała jakaś klasa pochodna i coś z nimi dalej zrobić.
Metoda z klasy bazowej byłaby wywoływana gdy jakieś dane zostaną odebrane przez czujnik w klasie pochodnej.

0

Przemyśl jeszcze raz swoją architekturę.

1

na pewno klasa bazowa nie ma zbierac informacji o niczym!

To ma robic zupelnie inna jednostka.

Sadze ze wzorzec projekty observer tutaj sie nada :)

http://sourcemaking.com/design_patterns/observer/cpp/3

0

Zbierać ich oczywiście klasa bazowa nie ma, natomiast wydaje mi się że powinna mieć do tych danych dostęp by móc z nich korzystać.
No nic, muszę to jeszcze przemyśleć, pewnie macie rację ;).

1 użytkowników online, w tym zalogowanych: 0, gości: 1