Während für die besten pratices Suche in Bezug auf Ordnung sind, war ich über diesen Thread stolpert:Fügen Sie Ordnung und versteckte Abhängigkeiten
C/C++ include file order/best practices [closed]
@squelart wurde die besagt, dass es besser pratice von lokal bis global schließen ist, da dies die Wahrscheinlichkeit versteckter Abhängigkeiten verringert.
StrTest.h
#pragma once
class CStrTest
{
public:
CStrTest();
~CStrTest();
std::string test;
};
StrTest.cpp
#include <string>
#include "StrTest.h"
CStrTest::CStrTest()
{
}
CStrTest::~CStrTest()
{
}
Ich konnte nicht reproduzieren die angegebene Verhalten (versteckte dependencie Duo einschließlich: ich dies nur mit dem folgenden Code in einem VS2015-Projekt getestet String zuerst in StrTest.cpp). Der Compiler gibt mir mehrere Fehler. Ist das etwas aus der Vergangenheit oder habe ich etwas übersehen?
EDIT: VS2015 Compiler-Fehler:
Fehler C4430 fehlende Typspezifizierer - int angenommen. Hinweis: C++ nicht unterstützt default-int
Fehler C2039 'string': kein Mitglied von 'std' ist
Fehler C3646 'test': unbekannt Überschreibung Spezifizierer
Es ist unklar, was Sie hier fragen - der obige Code kompiliert. –
Sie tun tatsächlich das Gegenteil von dem, was die quälende Antwort vorgeschlagen hat. – VTT
Sie müssen auch "std :: string" in "StrTest.h" angeben oder zumindest weiterleiten. Ihre Header-Dateien sollten eigenständig sein. – juanchopanza