Problem mit Namespaces
-
Hallo,
mein Problem sieht folgendermaßen aus:Mein Projekt besteht zum jetzigen Zeitpunkt aus einem Namespace:
- MFSim
Dieser enthält die Klassen
- Submodel
- Interface
- Worksheet
die in eigenen Dateien stecken.
wie kann ich jetzt in der Methode Interface.PaintArea() eine Variable vom Typ Worksheet^ erzeugen? Da sich beides im selben Namespace befindet sollte das doch gehen ohne daß ich noch etwas einbinde?
Der Compiler liefert mir aber die Fehlermeldung:
"error C2061: syntax error : identifier 'Worksheet'"
Wenn ich es mit MFSim::Worksheet^ versuche sagt er:
"error C2039: 'Worksheet' : is not a member of 'MFSim'"
Ratlos und fragend,
Matthias
-
Zeig mal code vielleicht kann ich dir dann helfen.
-
Ach und guck mal ob du richtig inkludiert hast
-
Da die Klassen im selben Namespace stehen dachte ich ich muß nichts inkludieren. Hier mal der Code:
Klasse DesignForm:
#pragma once namespace MFSim { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; public ref class DesignForm : public System::Windows::Forms::Form { public: DesignForm(void) { InitializeComponent(); . . .
Klasse Worksheet
#pragma once using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; namespace MFSim { public ref class Worksheet : public System::Windows::Forms::PictureBox { public: ArrayList^ mSubmodels; Worksheet() { . . .
Klasse Submodel
#pragma once using namespace System; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; namespace MFSim{ ref class Submodel : public System::Windows::Forms::Label { #pragma region Constructors public: Submodel() { . . .
Klasse Interface
#pragma once using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Diagnostics; using namespace System::Drawing; namespace MFSim { #pragma region Enums enum class InterfaceType{MassFlow, Torque}; enum class InterfacePosition{Top, Left, Right, Bottom}; #pragma endregion ref class Interface { #pragma region Constructors public: Interface(InterfaceType^ type, System::Drawing::Point^ point, InterfacePosition^ pos, String^ name, int posIndex) { . . . void DrawInterface(Point^ location, MFSim::Worksheet^ myWorksheet) { this->mRectangle->Location = *location; SolidBrush^ Stift = gcnew SolidBrush(Color::Black); myWorksheet->Image->FillRectangle(Stift, this->mRectangle); } . . .
Fehlermeldung:
"error C2039: 'Worksheet' : is not a member of 'MFSim'"
-
Bei Java ist es vielleicht so, da sich der Compiler seine Klassen selber zusammensucht. Bei C++ mußt du dem Compiler schon sage, wo er was zu finden hat (d.h. du brauchst ein
#include "WorkSheet.h"
in der Interface-Klasse, damit der Compiler die WorkSheet-Klasse findet).
-
OK, das ist genau das was ich wissen wollte.
Danke und bis bald,
Matthias.