Problem mit namespaces

Hallo,

ich habe da ein grosses Problem mit namespaces.
Die zentrale Frage auf die es hinauslaeuft muesste folgendes sein: An welchen Stellen und wie kann man einen namespace erweitern.
Ich habe bisher gedacht, das immer wenn ich irgendwo einen „namespace identifier {namespace-body}“ block einfuege dieser dem namespace hinzugefuegt wird. Aber das scheint irgenwie nicht zu stimmen.
In der Hilfe vom Visual Studio habe ich folgendes dazu gefunden:
„Unlike other declarative regions, the definition of a namespace can be split over several parts of a single translation unit.“
Ausserdem habe ich auch noch einmal die Definition einer „translation unit“ herausgesucht.
„C and C++ programs consist of one or more source files, each of which contains some of the text of the program. A source file, together with its include files (files that are included using the #include preprocessor directive) but not including sections of code removed by conditional-compilation directives such as #if, is called a „translation unit.““
Schlau bin ich aus diesen Definitionen aber leider nicht geworden. Irgendwie haette ich gedacht das eine translation unit wenigstens alle in meinem Projekt zusammengefassten Dateien umfasst, aber dem scheint nicht so zu sein.
Ich verwende das Visual Studio 5.0, was aber eigentlich keinen Unterschied machen sollte.
Ich bekomme beim Compilieren folgende Fehlermeldung:
Camera.cpp : error C2653: ‚CStdCam‘ : Keine Klasse oder Gueltigkeitsbereich
obwohl CStdCam in der entsprechenden Headerdatei definiert wurde, und dort in den Namensbereich eingeschlossen ist.
Hier das ganze zur Klarstellung noch einmal als Code:
****************
„camera.h“
namespace NOpenGL
{
class CStdCam
{…};
}

****************
„camera.cpp“
namespace NOpenGL
{
void CStdCam::func1(); // hierfuer gibt es den Fehler, und natuerlich auch fuer alle anderen Funktionen die als Elemente von CStdCam definiert wurden
}
****************
Ich habe nebenher noch andere Dateien *.cpp und *.h die einen gleichen Aufbau aufweisen, und auch den Namensbereich namespace NOpenGL verwenden. Wenn ich camera.h in den globalen NS setze, bekomme ich die naechste Fehlermedung dieser Art bei einer anderen Datei.
Irgendwie muesste es doch aber Moeglich sein einen NS aus mehreren Dateien zusammenzusetzen, die STL macht das doch auch.

Fuer Hilfe waere ich sehr dankbar!

Gruss Ben

Hallo,

Ich habe den VC Compiler nicht da und kann Dir leider nicht
direkt helfen. Ich habe das Problem versucht zu rekonstruieren.

Ich verwende auch namespaces über viele Files und es klappt.
Folgendes lies sich auch compilieren:

// File1
namespace NOpenGL
{
class CStdCam
{
void func1();
};
}

//File2
namespace NOpenGL
{
void CStdCam::func1()
{
int a = 12;
a+=2;
}
}

Der verwendete Syntax ist an für sich o.k.

Gruß

Micha

Danke, habe heute von jemanden der sich das angesehen hat erfahren, das es ein Schreibfehler war (Unterschied in der Gross-/ Kleinschreibung). Peinlich so etwas.

Gruss Ben