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
{
};