Din klass Bil innehåller ingenting annat än
public:
Bil(string regNr, string fabrikat, int vikt,Datum Ti_ink, float bensinForbruk, Tank tnk);
Bil();
private:
string regNr;
string fabrikat;
int vikt;
Datum ti_ink;
float bensinForbrukning;
Tank tnk;
Däremot innehåller din fil tre stycken klassdefinitioner. Det är något helt annat det. I C++ kan du lägga hur många klassdefinitioner du vill i en fil. (Visserligen kan klokskapen med det diskuteras, men det finns inget hinder för det.) Men varje klass är fortfarande sin egen klass. En konstruktor för en klass används för att instansiera och fylla denna instans med vettiga värden. Det görs klassvis.
------------
Sen har jag visst problem med innantilläsning :r så ett litet tillägg kan var på sin plats:
När du implementerar konstruktorn för Bil *kan* du skapa nya Datum och Tanks i den. Men i så fall ska konstruktorn ta argumenten till konstruktorerna inte färdiga objekt. Exempel:
I)
I .h: Bil(string regNr, string fabrikat, int vikt, Datum Ti_ink, float bensinForbruk, Tank tnk);
I .cpp: Datum och Tank är redan skapade så instansvariablerna får dessa värden direkt via tilldelning. Alltså måste Tank och Datum skapas *före* anropet till Bils konstruktor.
eller
II)
I .h: Bil(string regNr, string fabrikat, int vikt, string tillv, string ink, float bensinForbruk, float kap, float n);
I.cpp:
Bil::Bil(string regNr, string fabrikat, int vikt, string tillv, string ink, float bensinForbruk, float kap, float n) {
.....
ti_ink = *(new Datum(tillv, ink));
tnk = *(new Tank(kap, n));
}
Alltså kan du välja att anropa Datums och Tanks konstruktorer antingen före eller inom Bils konstruktor.