`nicht der name einer Art` Fehler bei `namespace std;` und Dateien
kompilieren Sie den code unten mit g++ main.cpp functions.cpp -o run
gibt mir die Fehlermeldung error: ‘vector’ does not name a type
. Deklaration-namespace an der Spitze der main.cpp
funktioniert in der Regel über alle .cpp
Dateien für mich.
main.cpp
using namespace std;
#include "functions.h"
main () {}
Funktionen.h
#include <vector>
functions.cpp
#include "functions.h"
vector <int> x;
EDIT: ich Schätze die Tatsache sein, dass alle Einsatzkräfte wissen, was Ihr redet, aber dies in der Regel für mich funktioniert. Würde die Verwendung eines Makefiles haben keinen Einfluß auf das? etwas, was ich möglicherweise fehlen?
- main() {} ist nicht legal in C++
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja aber in diesem Beispiel
functions.cpp
noch nicht gesehen hatusing namespace std
da Sie nur schrieb, dass inmain.cpp
.Nicht hinzufügen
using namespace std
zufunctions.h
verwendenstd::
zu qualifizieren Arten. Hinzufügen einesusing..
durch die eine unnötige Belastung für den Benutzer von deinem header.Müssen Sie qualifizieren die namespace:
Haben Sie eine
using namespace std
immain.cpp
, und es kann nicht gesehen werden vonfunctions.cpp
. Das ist die Wurzel des Problems.In der Regel sollten Sie vermeiden
using namespace std
, speziell im Header. Und wenn Sie wirklich müssen es inmain
ist, setzen Sie es nach all den Header.using namespace std
ist nicht infunctions.cpp
. Und die Annahme, dassusing namespace std
gesehen werden kann, irgendwo kann nur zu Schwierigkeiten führen.Importiert die
std
namespace nur inmain.cpp
, nicht infunctions.cpp
.Müssen Sie qualifizieren Ihre Nutzung -
std::vector
in der zweiten Datei, oder verwenden Sie dieusing
Richtlinie:oder
oder (bonus)
Haben Sie eine wirklich fehlerhafte compiler.
using
Richtlinien sollten keinen Einfluss auf übersetzungseinheiten, die nicht über direkte Sicht über die Richtlinie.Du
using namespace std
lokalen main.cpp nur. Sie benötigenin der Quell-Datei functions.cpp