Frage

Ich versuche, ein neues .NET C ++ Projekt von Grunde auf neu zu bauen. Ich plane, in diesem Projekt verwalteten und nicht verwalteten Code zu mischen.

Dieses Forum Thread IDataObject. mehrdeutig Symbolfehler Antworten ein Problem, das ich mehrmals gesehen habe

Post # 4 Staaten "Verschieben Sie alle 'mit Namespace-XXXX' von .h auf .cpp"

Dies sieht aus wie eine gute Idee, aber jetzt in meinen Header-Dateien brauche ich wie

Parameter aus dem .NET Framework referenzieren
void loadConfigurations(String^ pPathname);

Wie soll ich mit Aussagen in der CPP-Datei verschieben und die entsprechenden Namespaces in der H-Datei verwenden?

War es hilfreich?

Lösung

Es ist eine gute Idee, immer voll qualifizierte Namen in Header-Dateien zu verwenden. Da die using Anweisung alle Codes betrifft folgende unabhängig von #include, eine using Anweisung in einer Header-Datei betrifft alle setzen, die diese Header enthalten könnten.

Sie würden also Ihre Funktionsdeklaration in der Header-Datei ändern:

void loadConfigurations(SomeNamespace::String^ pPathname);

wo SomeNamespace ist der Name des Namespace zuvor using wurden.

Andere Tipps

Ich weiß nicht viel über .NET, so meine Antwort gilt nur für den nicht verwalteten c ++ Teil Ihrer Frage. Persönlich ist dies einer der Hauptgründe, warum ich wie die Pest meiden „mit Namespace-XXXX“; Anweisungen.

ich lieber nur mit Namespaces wie "std :: cout << "explicit sein Hallo Welt" << std :: endl;"

dies zu vermeiden Namespace Kollisionen und es niemals eine Mehrdeutigkeit, wo etwas herkommt. Auch, wenn Sie etwas tun, wie „using namespace std;“ Sie sind zum Verhängnis irgendwie was Namespaces Sie geben. Sie wurden entwickelt, um Kollisionen zu vermeiden und durch alles, was in den globalen Import, die Sie gerade Kollisionen laden wieder in.

Dies ist stricly eine Frage der Meinung und Geschmack.

Wie für das, was in Header zu tun, schreibe ich nur Sachen wie diese: "Leeren f (const std :: string & s);"

Um dies zu lösen, ich habe in der H-Datei dies getan:

namespace TestClassNS
{
  class TestClass;
}

und dann in der CPP-Datei würde ich die .h # include, dass Testclass war in und tun, um die Verwendung von namespaceTestClassNS es.

Meine C ++ ist rostig, so kann es einen besseren Weg geben.

Nach meiner Erfahrung die einzige Namespace Sie vorsichtig sein müssen, ist System selbst. Es ist etwas ärgerlich, dass die häufigste, am wichtigsten ist, wo Sie Probleme finden, aber das ist das Leben.

Zumindest kann man trösten, dass, wenn Sie verwaltete Klassen erstellen, Sie Probleme sind mit umfasst wird Erleichterung bei der Montage Barriere erhalten, im Gegensatz zu Problemen mit Header-Dateien für nicht verwaltete Klassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top