Sorry- ich habe schon wieder ein Problem!!
-
Hallo!!
Ich habe im letzten Beitrag ziemlich gute Antworten bekommen und habe damit auch schon schoen fleissig weiter an meinem Projekt gezimmert- mein Problem jetzt aber ist, dass der Debugger mal wieder an einer Stelle meckert, an der ich das einfach nicht verstehe- ich meine er hat das sogar schon mindestens einmal komplett durchgegangen und hat gar keine Fehler gemeldet (koennt auch sein, dass er das nie akzeptiert hat-ich bin mir dabei aber ziemlich sicher!!!)- hier also der Quellcode:#include <stdlib.h> using namespace System; using namespace cli; value struct INTEGER { String^ name; int typ; int wert; array <int, 1>^ array1; array <int, 2>^ array2; array <int, 3>^ array3; }; struct PERSON { // Declare PERSON struct type int age; // Declare member types long ss; float weight; char name[25]; } family_member; // Define object of type PERSON
Die obere Struktur habe ich selbst geschrieben, die andere habe ich aus der Hilfe rauskopiert um zu zeigen, dass es selbst damit nicht geht!!- Hier sind die Fehler, die er meldet:
c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(15) : error C2011: 'INTEGER' : 'struct' type redefinition
c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(15) : see declaration of 'INTEGER'
c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(68) : error C2011: 'PERSON' : 'struct' type redefinition
c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(68) : see declaration of 'PERSON'Ich weiss wirklich nicht weiter bei diesem Problem- und es tut mir ziemlich dolle leid, wenn das eine Sache ist, bei der ich einfach was uebersehen habe.. ich glaube aber wirklich, dass es schonmal funktioniert hat- und das ist halt das deprimierende
-
Blöde Frage, aber wozu steht da eigentlich das ^ nach der Typangabe?
Hab ich so noch nie gesehen.Und zum Fehler... redefination is eigentlich klar, du hast den Typen mehrfach definiert.
Entweder zwei Klassen mit demselben Namen, oder, was häufiger der Fall ist, kann das sein, dass sich der von dir angegebene Quellcode in einer h Datei befindet, du diese mehrfach includest und keinen Include Guard
(#ifndef blabla
#define blabla
Quellcode
#endif) hast??*edit*
huch, is ja lustiges .net forum, dachte unverstümmeltes C++.
Dann habich hier eh keine Ahnung :>
-
dreaddy schrieb:
Blöde Frage, aber wozu steht da eigentlich das ^ nach der Typangabe? Hab ich so noch nie gesehen.
Du hast vermutlich noch nie C++/CLI gesehen... aber genau das ist der Sinn und Zweck dieses Forums
-
Zum OP: Lässt sich bei mir Problemlos übersetzen...
#include <stdlib.h> using namespace System; using namespace cli; value struct INTEGER { String^ name; int typ; int wert; array <int, 1>^ array1; array <int, 2>^ array2; array <int, 3>^ array3; }; struct PERSON { // Declare PERSON struct type int age; // Declare member types long ss; float weight; char name[25]; } family_member; // Define object of type PERSON int main() { }
PS: Du mischt hier mal wieder wild native C++ und C++/CLI... davon rate ich immer ab, wenn man nicht genau weiss was man tut!
-
Jochen Kalmbach schrieb:
Zum OP: Lässt sich bei mir Problemlos übersetzen...
PS: Du mischt hier mal wieder wild native C++ und C++/CLI... davon rate ich immer ab, wenn man nicht genau weiss was man tut!
Hi!!
Also ert mal habe ich das leider nicht ganz verstanden, warum das bei dir geht! Ist das weil die Main Funktion in der gleichen Datei steht- oder woran wird das liegen, dass das bei mir nicht funktioniert aber bei dir??(Du hast glaub ich auch nichts veraendert- oder?? Also wenn ja dann bin ich echt blind!! ) Aber zu dem Managed und Native: Mit diesem Projekt steige ich gerade endgueltig von Delphi auf C++ um (Klappt ziemlich gut- durch dieses konkrete Projekt lerne ich wirklich C++ und bin damit schon einigermassen vertraut..... manchmal dann aber auch wieder nicht, was man an meinem Posts erkennen kann ). Ich habe ein Buch ueber Visual C++ 6, in dem halt viele Sachen mit native C++ gemacht werden- ich moechte aber halt ganz gerne die ganzen "Komfortfunktionen" von managed C++ nutzen weil es einfach bequemer ist das zu verwenden!! Aber ich denke wirklich, dass ich da sehr viel zusammenwerfe! In einer Stelle des Codes nehme ich auch einen String auseinander, habe dann wchar_t wandle das in char um und anschliesend in einen neuen String- warscheinlich auch wieder son native/managed Kauderwelsch(Klappt aber )! Aber in meiner Struktur- ist das die int Variable, die native ist oder meinst du die arrays?? (Jedesmal wenn ich in der Hilfe sowas finde wie- Array Class dann kann ich davon ausgehen, dass das managed ist- oder??)
-
dreaddy schrieb:
Blöde Frage, aber wozu steht da eigentlich das ^ nach der Typangabe?
Hab ich so noch nie gesehen.Und zum Fehler... redefination is eigentlich klar, du hast den Typen mehrfach definiert.
Entweder zwei Klassen mit demselben Namen, oder, was häufiger der Fall ist, kann das sein, dass sich der von dir angegebene Quellcode in einer h Datei befindet, du diese mehrfach includest und keinen Include Guard
(#ifndef blabla
#define blabla
Quellcode
#endif) hast??Ist leider nicht der Fall Trozdem danke fuer den Hinweis!!
-
Naja ohne mehrinfos kann man nich viel Helfen. Die von Dir gezeigten Quellcodes haben keinen Includeguard, mehrfachincludieren ist daher ohne weiteres möglich.
Setze mal ein #pragma once in die structure.h bevor Du mit den Deklarationen beginnst und schau mal ob das hilft. Wenn nein, mehr infos
-
Hey Knuddlbaer!!!
Also das mit dem #pragma once hat funktioniert!! Vielen, vielen Dank dafuer!! Der Tip war wirklich Gold wert!!
-
Den Tipp hat Dir im prinzip dreaddy
schon gegeben
-
Knuddlbaer schrieb:
Den Tipp hat Dir im prinzip dreaddy
schon gegebenOhh ja!! Natuerlich vielen lieben Dank an ALLE, die durch Posts geholfen haben