ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
373
373
EMPFEHLEN
-
moinsen,
ich programmiere c++ erst seit ein paar tagen, stehe jetzt aber total auf dem schlauch. ich möchte einen string in mein struct einlegen, dies funktioniert aber leider nicht.
es kommt dann die fehlermeldung:"Ein verwalteter 'lol' kann nicht in einem nicht verwalteten 'test' deklariert werden"Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include "stdafx.h" using namespace System; struct test { String ^lol; }ka[2]; int main(array<System::String ^> ^args) { String ^str1="123"; ka[0].lol = str1; Console::WriteLine(str1); return 0; }
kann mir jemand helfen? danke schon mal :-P
-
06.04.10 15:17 #2
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Hallo xlon,
wie dein Kompiler schon sagt ahst du ein nicht Verwaltetes (unmanaged) struct angelegt, in dem du ein Verwalteten (managed) Datentyp deklarieren willst. Das kann so nicht funktionieren. Das dein String Datentyp managed ist siehst du an dem '^'. Damit der Kompiler deine Code frisst musst du das struct ebenfalls managed deklarieren. Das machst ein fach in dem du ein "typedef __gc" davor setzt. Habe es jetzt nicht getestet aber so soltle es funktionieren.
Mfg
-
Hi,
danke für deine antwort.
leider funktioniert es nicht ganz.
Code :1 2 3 4 5 6 7 8 9 10 11 12
typedef__gc struct test { String ^lol; }ka[2]; int main(array<System::String ^> ^args) { String ^str1="123"; ka[0].lol = str1; Console::WriteLine(str1); return 0; }
warum muss denn da __gc noch dahin? aber auch ohne funktioniert es leider nicht. weißt du vllt woran es liegt?
-
06.04.10 16:03 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.Das typedef __gc ist ja sowas von Old School

Ein managed struct kann mit dem Schlüsselwort ref deklariert werden:Siehe http://msdn.microsoft.com/en-us/libr...05cplus_topic8Code cpp:1 2 3
ref struct Blah { ... }
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
ja super...das hat jetzt soweit geklappt...nur das ich jetzt kein array mehr mit der struct habe.
-
06.04.10 17:01 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Arrays von managed Typen kann man so anlegen:
Siehe z.B. http://www.codeproject.com/KB/mcpp/cppcliarrays.aspxCode cpp:1
array<test^> ein_array = gcnew array<test^>(5);
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
danke für deine antwort deepthroat,
leider ging es so wie du es beschrieben hat nicht ganz.
ich habe jetzt also eine struct was ca so aussieht:
Code :1 2 3 4 5 6 7 8
ref struct Pings { String ^name; String ^adr; int max_latenz; int ping1, ping2,ping3,ping4,ping5; };
da ich davon mehrere brauche, brauche ich ein array. ganz normal ging es nicht...
dann hab ich in meiner funktion:
eingefügt.Code :1
array<Pings^> test = gcnew array<Pings^>(5);
dann kommt aber folgende fehler meldung :
Code :1
Dieser Typ kann ohne "^" der obersten Ebene hier nicht verwendet werden.
dann habe ich es so probiert:
Code :1
array<Pings^> ^test = gcnew array<Pings^>(5);
wo dann 16 fehler kommen.
Code :1
Links von ".name" muss sich eine Klasse/Struktur/Union befinden.
usw.Code :1
Links von ".max_latenz" muss sich eine Klasse/Struktur/Union befinden.
gebraucht werden alle so:
Code :1
test[0].name = lesen->GetString(1);
vielen dank schonmal
-
Update:
jetzt hab ich es mal so probiert:
Code :1
test[0]->name = lesen->GetString(1);
dann geht es...aber nur bis zur stelle...dann stürzt er ab.
Code :1 2 3
Eine nicht behandelte Ausnahme des Typs "System.NullReferenceException" ist in PingTool_Dienst.exe aufgetreten. Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
-
06.04.10 17:24 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Richtig. Das Array selbst muss auch verwaltet sein (also mit ^).
Das Array enthält nachdem es kreiert wurde nur leere Eintrage (nullptr).
Du mußt das Array erst noch füllen bevor du auf die Elemente zugreifen kannst:
GrußCode cpp:1 2
test[0] = gcnew Pings(); test[0]->name = lesen->GetString(1);
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
ich glaub bald haben wirs :-D
ich habe jetzt noch
eingefügt...Code :1 2
test[0] = gcnew Pings(); test[0]->name = lesen->GetString(1);
jetzt kommt aber noch folgende fehlermeldung:
Code :1
error C2440: '=': 'Pings ^' kann nicht in 'cli::array<Type> ^' konvertiert werden
-
sorry...ich weiß nicht was ich da gesehen habe oO...
funktioniert natürlich alles...
vielen dank!
-
07.04.10 09:46 #12
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Ja jaDas typedef __gc ist ja sowas von Old School
ich komm halt aus der C# ecke und habe mit managed C++ selten gearbeitet. Das war noch mein letzter Wissensstand, aber gut das mal zu wissen
Ähnliche Themen
-
c++ strings
Von xlon im Forum C/C++Antworten: 6Letzter Beitrag: 06.04.10, 12:27 -
Struct mit Strings - Alle Strings auf einmal "leeren"
Von C4rter im Forum C/C++Antworten: 2Letzter Beitrag: 17.05.08, 10:40 -
Strings in C
Von Ozzy Ozborn im Forum C/C++Antworten: 8Letzter Beitrag: 30.04.08, 22:31 -
strings
Von Irgendjemand_1 im Forum C/C++Antworten: 18Letzter Beitrag: 05.09.05, 12:42 -
Variablen an Strings und Strings an / als Variablen übergeben
Von Lunata im Forum Flash PlattformAntworten: 7Letzter Beitrag: 09.02.05, 20:42





Zitieren

Login





