Probleme beim Konstruktor-Überladen

hansolo19

Neues Mitglied
Hallo Forum,
ich möchte eine Klasse mit zwei Konstruktoren schreiben: Der eine soll aufgerufen werden, wenn das Objekt ohne Zusatzangaben erstellt wird, der andere soll aufgerufen werden, wenn beim Erstellen des Objekts Variablen mit-angegeben werden.

Ganz wichtig: Der Konstruktor soll nicht In-Line sein. Ich möchte also Definition und Deklaration schön aufgeteilt haben, in .h -und .cpp-Datei.

Hier mein Code in gekürzter Form:

C++:
//Vehicle.h
using namespace std;
class Vehicle
{
    private:
        string manufacturer;
        string model;
        string serialNumber;
        int weight;
        int power;
        char numDoors;

    public:
        //Konstruktoren:
        Vehicle();
        Vehicle(string hersteller, string modell, string seriennr, int gewicht, int leistung, char tueren);

        //Kopier-Konstruktor:
        Vehicle(const Vehicle& Fahrzeug);

        //Destruktor:
        ~Vehicle(){cout << "Fahreug mit Seriennr.: " << serialNumber << " wird gelöscht." << endl;};
        
        //Getter
           ...
        //Setter
           ...
        //Member-Functions
           ...               
}; //end class Vehicle


//Vehicle.cpp
#include "Vehicle.h"
//   Konstruktoren:
//********************
// Standard-Konstruktor
Vehicle::Vehicle(){
    manufacturer = "";
    model = "";
    serialNumber = "";
    weight = 0;
    power = 0;
    numDoors = 0;
} //end Vehicle

//Konstruktor mit Übergabewerten (deutsche Variablen sind funktionsintern)
Vehicle::Vehicle(string hersteller, string modell, string seriennr, int gewicht, int leistung, char tueren){
    manufacturer = hersteller;
    model = modell;
    serialNumber = seriennr;
    weight = gewicht;
    power = leistung;
    numDoors = tueren;
} //end Vehicle

//Copy-Konstruktor:
Vehicle::Vehicle(const Vehicle& Fahrzeug){
    manufacturer=Fahrzeug.manufacturer;
    model=Fahrzeug.model;
    serialNumber=Fahrzeug.serialNumber;
    weight=Fahrzeug.weight;
    power=Fahrzeug.power;
    numDoors=Fahrzeug.numDoors;
    cout << "Es wurde ein Fahrzeug kopiert: " << Fahrzeug.serialNumber << endl;
} //endfunc Vehicle (const Vehicle &Fahrzeug) (Copy-Konstruktor)


//main.cpp
#include "Vehicle.h"
using namespace std;

void main() {
    Vehicle vehicle1;  //Instanzierung mit Default-Konstruktor
    Vehicle vehicle2("Peugeot","306","AB0H8837I1","RCZ",1490,200,3); //Instanzierung mit eigenen Werten

    ...
} //end main

Leider meckert der Compiler:
Code:
||=== Build: Release in Testprogramm (compiler: GNU GCC Compiler) ===|
main.cpp||In function ‘int main()’:|
main.cpp|53|error: no matching function for call to ‘Vehicle::Vehicle(const char [8], const char [4], const char [10], const char [4], int, int, int)’|
Vehicle.h|36|note: candidate: Vehicle::Vehicle(const Vehicle&)|
Vehicle.h|36|note:   candidate expects 1 argument, 7 provided|
Vehicle.h|33|note: candidate: Vehicle::Vehicle(std::__cxx11::string, std::__cxx11::string, std::__cxx11::string, int, int, char)|
Vehicle.h|33|note:   candidate expects 6 arguments, 7 provided|
Vehicle.h|32|note: candidate: Vehicle::Vehicle()|
Vehicle.h|32|note:   candidate expects 0 arguments, 7 provided|
||=== Build finished: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Die Zeilennummern stimmen jetzt nicht mehr, weil ich den Code für diesen Thread gekürzt habe. Warum findet der Compiler die überladene Funktion nicht (erste Fehlermeldung)?
 
Bin gerade unterwegs, aber auf Anhieb finde ich schonmal keinen Konstruktor der zu deinen 7 Argumenten passt? Ich sehe nur einen der 6 Argumente entgegen nimmt.
 
Zurück
Oben Unten