J'ai un véhicule de classe (vehicle.h et vehicle.cpp). Visual Studio me donne des erreurs si je ne mets pas les inclus dans le fichier d'en-tête. Pourquoi est-ce? Dans mes deux missions précédentes, j'ai mis les inclus dans le fichier .cpp et n'ai eu aucun problème. Voici ce que je veux travailler, mais n'est pas:C++ où placer comprend
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
personne .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
Couple d'erreurs par exemple:
erreur C2061: erreur de syntaxe: identificateur 'chaîne'
erreur C2146: erreur de syntaxe: manquant ';' avant identificateur 'getManufacturer'
erreur C2061: erreur de syntaxe: identificateur 'chaîne' erreur C2535: 'personne :: personne (void)': fonction membre déjà définie ou déclarée
erreur C2146: erreur de syntaxe: manquant « ; ' avant l'identificateur 'get_name'
erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int
erreur C4430: spécificateur de type manquant - int supposé. Remarque: C++ ne prend pas en charge default-int
erreur C2146: erreur de syntaxe: manquant ';' avant l'identificateur 'getDriverLicenseNo'
Quelles sont les erreurs? –
Pouvez-vous s'il vous plaît mettre les messages d'erreur comme des commentaires dans le code, de sorte que nous savons de quelle ligne chacun parle? –
Bien sûr, ce n'est pas un problème je suppose, mais à ce stade, sans bouger quelque chose, j'ai un total de 41 erreurs. Y a-t-il un moyen d'obtenir du studio visuel pour le mettre dans le code d'une façon ou d'une autre? Les erreurs disparaissent quand je déplace les inclusions donc je suis presque sûr que c'est tout. Je veux juste comprendre comment le faire correctement et ne pas se battre avec le compilateur à chaque fois. – Pete