Łączenie pociągów, dziedziczenie klas w c++, wskaźnik w konstruktorze.

0

Hej mam taką zagwozdkę. Próbuję to jakoś rozwiązać ale nie idzie mi.
Zarys tego co trzeba zrobić:
Symulacja z łączeniem wagonów i lokomotywy, ładowanie towarów i zmiana prędkości pociągów.
1 Otrzymałam dane jakie mi się potrzebne min RailVehicle jako abstrakcyjną klasę bazową, Engine-klasa lokomotywy i FreightCar-klasa obrazująca wagon.
2 Zasady łączenia: pojazdy łączymy tylko z tej strony, która jest do niczego nie podłączona-> funkcja podłączająca pojazd do szeregu, rozłączenie pojazdów= podanie NULL, w przypadku pomyślnego połączenia funkcja zwraca wskaźnik do pojazdu (tutaj domyśliłam się że chyba trzeba zwrócić adres konstrukcją '=&'). Zniszczenie pojazdu = odłączenie od reszty (tu chyba będzie destruktor z funkcją delete). Lokomotywę można dołączyć tylko na początku pociągu i może być tylko jedna.
3 Każdy pojazd można zapytać o prędkość pociągu i przy użyciu wskaźników(zapytanie poprzednika) dochodząc do czoła pociągu. Lokomotywa zwraca prędkość.
4. Funkcje showthis i showall mają wprowadzać do strumienia info o pojeździe i całym pociągu

Ok na razie tyle zaznaczam, poproszę o nakierowanie mnie co i dlaczego nie działa a także wytłumaczenie jak to poprawnie rozwiązać. Zaznaczam że z dziedziczenia w ogóle nie mieliśmy zajęć i takie zadanie nam się na koniec trafiło.
PS RailVehicle* ConnectToNext(RailVehicle* nextPtr) w tylm konstruktorze mamy wskaźnik dlaczego? i jak z tego wybrnąć? Na razie bardzo czepia się implementacji: RailVehicle::ConnectToNext(RailVehicle *nextPtr)

#include<iostream>

using namespace std;
class RailVehicle
{
    public:
    RailVehicle* ConnectToNext(RailVehicle* nextPtr); //wskaznik do obiektu connect to next.
    virtual int GetSpeed() const;
    virtual void ShowThis (ostream &o) const=0;
    void ShowAll (ostream &o) const;
    ~RailVehicle()
    {
    cout<<"Destruktor RailVehicle"<<endl;
    }
};
RailVehicle::ConnectToNext(RailVehicle* nextPtr)
{
    int ConnectToNext [i]
    {for(i=0;i<i; i++)
    ConnectToNext()}
    return ConnectToNext;

}
virtual int RailVehicle::GetSpeed() const
{
    RailVehicle::GetSpeed=GetSpeed();
}
virtual void RailVehicle::ShowThis(ostream &o) const=0
{
    RailVehicle::ShowThis=ShowThis() const;
    return
}
void RailVehicle::ShowAll(ostream &o) const
{
    RailVehicle::ShowAll=ShowAll();
};
class Engine : public RailVehicle
{
    public:
    int ChangeSpeed(int Value);
    Engine();
    ~Engine()
    {
        cout<<"Destruktor Engine"<<endl;
    }
};
class FreightCar : public RailVehicle
{

}; 
0

Słówko virtual umieszcza się tylko przy prototypie funkcji a nie przy definicji funkcji

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