Ich habe eine Klasse Fahrzeug (vehicle.h und vehicle.cpp). Visual Studio gibt mir Fehler, wenn ich die Includes nicht in die Header-Datei einfüge. Warum ist das? In meinen vorherigen 2 Aufgaben habe ich die Includes in die .cpp-Datei eingefügt und hatte keine Probleme. Hier ist, was ich arbeiten wollen, aber nicht ist:C++ wo zu platzieren enthält
vehicle.h:
#ifndef VEHICLE_H
#define VEHICLE_H
using namespace std;
class Vehicle
{
public:
Vehicle();
Vehicle(string mfr, int cylinders, Person owner);
string getManufacturer();
int getNumOfCylinders();
Person getOwner();
private:
string manufacturer;
int numOfCylinders;
Person owner;
};
#endif
vehicle.cpp:
#include <iostream>
#include <string>
using namespace std;
#include "person.h"
#include "vehicle.h"
Vehicle::Vehicle()
{
//Initialize with defaults
}
Vehicle::Vehicle(string mfr, int cylinders, Person owner)
{
//Initialize with parameters
}
string Vehicle::getManufacturer()
{
return manufacturer;
}
int Vehicle::getNumOfCylinders()
{
return numOfCylinders;
}
Person Vehicle::getOwner()
{
return owner;
}
Person.h:
#ifndef PERSON_H
#define PERSON_H
class Person {
public:
//default constructor
Person();
//constructor with two parameters
Person(string the_name, string no);
//accessor member functions
string get_name() const;
string getDriverLicenseNo() const;
//overloaded equal operator
bool operator==(const Person& p);
//overloaded extraction operator
friend istream& operator >> (istream& in, Person& p);
//overloaded insertion operator
friend ostream& operator <<(ostream& out, Person& p);
private:
string name;
string drivingLicenseNo;
};
#endif
Person .cpp:
#include <iostream>
#include <string>
using namespace std;
#include "person.h"
//default constructor
Person::Person(){}
//constructor with two parameters
Person::Person(string the_name, string no){}
//accessor member functions
string Person::get_name() const
{
return name;
}
string Person::getDriverLicenseNo() const
{
return drivingLicenseNo;
}
//overloaded equal operator
bool Person::operator==(const Person& p)
{
return false;
}
//overloaded extraction operator
istream& operator >> (istream& in, Person& p)
{
return in;
}
//overloaded insertion operator
ostream& operator <<(ostream& out, Person& p)
{
return out;
}
truck.h:
#include "vehicle.h"
class Truck: public Vehicle
{
};
truck.cpp:
#include "person.h"
#include "vehicle.h"
//implement truck here
Paar von Fehlern zum Beispiel:
Fehler C2061: Syntaxfehler: Bezeichner 'string'
error C2146: Syntaxfehler: fehlt ';' vor Bezeichner
Fehler C2061 'getManufacturer': Syntaxfehler: Bezeichner 'string' Fehler C2535: 'Person :: Person (void)': Member-Funktion bereits definiert oder erklärt
Fehler C2146: Syntaxfehler: fehlen ‚; " vor dem Bezeichner 'get_name'
Fehler C4430: fehlender Typspezifizierer - int wird angenommen. Hinweis: C++ unterstützt nicht default-int
Fehler C4430: fehlende Typangabe - int angenommen. Hinweis: C++ unterstützt nicht default-int
Fehler C2146: Syntaxfehler: fehlende ';' Before identifier 'getDriverLicenseNo'
Was sind die Fehler? –
Können Sie die Fehlermeldungen bitte als Kommentare in den Code eingeben, damit wir wissen, über welche Zeile wir sprechen? –
Sicher, das ist kein Problem, denke ich, aber an diesem Punkt, ohne etwas zu bewegen, habe ich insgesamt 41 Fehler. Gibt es eine Möglichkeit, Visual Studio irgendwie in den Code zu bringen? Die Fehler verschwinden, wenn ich die Includes verschiebe, also bin ich mir ziemlich sicher, dass es das ist. Ich möchte nur verstehen, wie man es richtig macht und nicht jedes Mal mit dem Compiler kämpft. – Pete