Onbekende overschrijvingsspecificatie, ontbrekende typespecificatie

Eerst, Parameter.h:

#pragma once
#include <string>
class Parameter {
public:
    Parameter();
    ~Parameter();
private:
    string constValue;
    string varName;
};

En Parameter.cpp:

#include "Parameter.h"
using namespace std;
Parameter::Parameter() {};
Parameter::~Parameter() {};

Ik heb deze twee bestanden tot op het bot teruggebracht om de fouten te krijgen die lijken op te duiken. Bij de twee privédeclaraties voor strings krijg ik de twee fouten:

'constValue': unknown override specifier
missing type specifier - int assumed. Note: C++ does not support default-int

Ik heb verschillende vragen met deze fouten gezien, maar elk verwijst naar circulaire of ontbrekende verwijzingen. Omdat ik het heb uitgekleed tot wat absoluut vereist is, zie ik geen kringverwijzingen of verwijzingen die ontbreken.

Enig idee?


Antwoord 1, autoriteit 100%

Zoals @Pete Becker in de opmerkingen aangeeft, moet je de naam stringkwalificeren als std::string:

private:
    std::string constValue;
    std::string varName;

De compiler weet gewoon niet waar je het over hebt, en het is het equivalent van gewoon schrijven:

SomeGreatType myMagicalUniversalType

De compiler weet alleen niet welk type dat is, tenzij je het hebt gedeclareerd, vandaar de fout

ontbrekende typespecificatie – int verondersteld

Je moet lezen over waarom je using namespace std;.

Met betrekking tot uw vraag in de opmerkingen:

In alle (werk)klassen die ik heb geschreven, heb ik nooit de std:: ingevoerd, in plaats daarvan vertrouwend op het gebruik van de naamruimte std; in het .cpp-bestand. Waarom zou deze anders zijn?

Ik kan alleen maar concluderen dat op een bepaald moment voordat ik “Parameter.h” heb toegevoegd, dat je een using namespace stdhad. Bijv.:

// SomeType.h
#using namespace std
...
// Parameter.cpp
#include "SomeType.h"
#include "Parameter.h"

De compiler compileert dingen van boven naar beneden, en inclusief vervangt in wezen gewoon de #includemet de inhoud van dat bestand

Other episodes