Inconnu remplacer prescripteur, spécificateur de type manquant
D'abord, Parameter.h
:
#pragma once
#include <string>
class Parameter {
public:
Parameter();
~Parameter();
private:
string constValue;
string varName;
};
Et Parameter.cpp
:
#include "Parameter.h"
using namespace std;
Parameter::Parameter() {};
Parameter::~Parameter() {};
Je vous ai apporté ces deux fichiers vers le bas pour le plus strict de l'os pour obtenir les erreurs qui semblent être popping up. Dans les deux déclarations pour string
s, j'ai deux erreurs:
'constValue': unknown override specifier
missing type specifier - int assumed. Note: C++ does not support default-int
J'ai vu plusieurs questions avec ces erreurs, mais chacun se réfère à la circulaire ou de l'absence de références. Comme je l'ai fait à ce qui est absolument nécessaire, je ne vois pas de références circulaires ou des références qui manquent.
Des idées?
Le nom doit être
Dans toutes les (de travail) les classes que j'ai écrit, je n'ai jamais mis dans le
L'utilisation de la déclaration doit venir avant l'utilisation du nom.
Parady: Non,
TL;DR
std::string
.Dans toutes les (de travail) les classes que j'ai écrit, je n'ai jamais mis dans le
std::
, au lieu de compter sur la using namespace std;
dans le .fichier cpp. Pourquoi serait-ce un être différent?L'utilisation de la déclaration doit venir avant l'utilisation du nom.
Parady: Non,
using namespace std;
dans .cpp
fichier, situé comme dans l'exemple ci-dessus, n'a aucun effet sur les fichiers d'en-tête. Apparemment dans vos autres "classes que vous avez écrit" vous avez fait les choses différemment.TL;DR
override specifier
et le reste est un leurre. Un message d'erreur plus informatif aurait été: 'constValue' unknown.
OriginalL'auteur vilequarter | 2016-02-01
Vous devez vous connecter pour publier un commentaire.
@Pete Becker points dans les commentaires, vous devez qualifier le nom
string
commestd::string
:Le compilateur ne sait tout simplement pas de quoi vous parlez, et c'est l'équivalent d'écriture:
Le compilateur ne sait tout simplement pas ce type qui est, sauf si vous avez déclaré, d'où l'erreur
Vous devriez lire sur pourquoi vous devriez éviter de
using namespace std;
.En ce qui concerne votre question dans les commentaires:
Je ne peux que conclure qu'à un certain moment avant de Paramètre".h" que vous avez eu un
using namespace std
. E. g.:Le compilateur compile les choses de haut en bas, et y compris essentiellement juste remplace le
#inclure
avec le contenu de ce fichierusing namespace std
dans mes autres projets. Je vais travailler sur ce problème.Faites-vous une faveur et éviter
#using namespace std
Même si vous êtes en évitant #using namespace std vous pouvez toujours utiliser la chaîne std, dans ce cas, vous n' #using std::string, et alors vous aurez seulement à type de chaîne et il va savoir ce que vous voulez.
OriginalL'auteur Tas