mikrocontroller.net

Forum: PC-Programmierung List of structs c++


Autor: Frigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen

Ich arbeite mit C++ und dem Visual Studio 2008. Ich habe eine Producer 
(USB Daten) Consumer(MySQL Datenbank) Situation.
Als erstes, wollte ich einen einfachen Producer schreiben, der geschützt 
eine Struktur in eine Liste abspeichern soll.
#include "stdafx.h"
#include "Producer.h"
#include <iostream>

using namespace System;
using namespace System::Threading;
using namespace System::Collections::Generic;

typedef struct PERSON {   // Declare PERSON struct type
  int age;   // Declare member types
  long ss;
  float weight;
  char name[25];
}; 
Producer::Producer(){}
void Producer::ThreadProc(){
  List<PERSON>^ test= gcnew List<PERSON^>();      // error C3225: 
  //Das generische Typargument für "T" kann nicht "PERSON" sein, es muss ein Werttyp oder ein Handle für einen Referenztyp sein.
  while(1)  
  {
    Thread::BeginCriticalRegion();
    // hier möchte ich in die Liste schreiben  
    Thread::EndCriticalRegion();
    Thread::Sleep( 700 );
  }
}
wie ihr seht, gibt es einen Fehler beim erzeugen der Liste. Was mache 
ich falsch? Gibt es eine bessere Lösung, als mit einer Liste?
Für Tips bin ich sehr dankbar!
Mit freundlichen Grüssen
Frigu

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was mache ich falsch?
das du nicht c++ programmierst, das ist doch c++.net - hat leider nicht 
viel mit c++ zu tun.

aber ich rate mal
> List<PERSON>^ test= gcnew List<PERSON^>();
bist du sicher das das ^ einmal hinter PERSON und einmal nicht steht?

Autor: Frigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht so auch nicht...

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frigu schrieb:
> Geht so auch nicht...

WAS geht auch nicht?
Wie soll man dir helfen, wenn schon dein Problem so geheim ist, dass du 
es uns nicht mitteilst?
List<PERSON^>^ test= gcnew List<PERSON^>();

Autor: Frigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ernst,
ich meinte, so geht es auch nicht:
List<PERSON>^ test= gcnew List<PERSON>();
Ich weiss nicht, was für Informationen du noch benötigst. Geheim ist gar 
nichts...;)

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich weiss nicht, was für Informationen du noch benötigst.
Na, was du versucht hast, und was nicht ging. Mit Fehlermeldung.

Warum eigentlich nicht einfach
List<PERSON> test;

Oder wenns Pointer/Refs sein sollen, was ist mit der oben geposteten 
Variante:
List<PERSON^>^ test= gcnew List<PERSON^>();

Autor: Frigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
List<PERSON^>^ test= gcnew List<PERSON^>();
gibt: error C3699: "^": Diese Referenzierung kann nicht für den Typ 
"PERSON" verwendet werden.
List<PERSON> test;

gibt: error C3225: Das generische Typargument für "T" kann nicht 
"PERSON" sein, es muss ein Werttyp oder ein Handle für einen Referenztyp 
sein.



ich muss das ganze wohl aufgeben... Trotzdem danke!

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
d.H. schon "PERSON^" geht nicht, die Liste ist erstmal garnicht schuld.
Nimm statt der Struct ein Object ("ref class PERSON", "__gc class 
PERSON", ...,  oder so).

Autor: Frigu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ernst
Ich danke dir. Mit dem Objekt funktioniert es.
Mit besten Grüssen
Frigu

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.