Code: Alles auswählen
objekt var = "Hallo";
var = 5;
Code: Alles auswählen
List<objekt> variablen = new List<objekt>();
variablen.Add("Erste");
variablen.Add(2);
Code: Alles auswählen
objekt var = "Hallo";
var = 5;
Code: Alles auswählen
List<objekt> variablen = new List<objekt>();
variablen.Add("Erste");
variablen.Add(2);
Code: Alles auswählen
vector<void*> data;
data.push_back(&myData);
myType myData2 = (myData)*data.pop_back();
Danke werde ich mal ausprobieren.cloidnerux hat geschrieben:Das einzige was mir bekannt ist, ist der void Pointer.
object ist im den Sinne auch nichts anderes, eine Referenz auf ein nicht näher bekanntes Objekt.
Dementsprechend:Code: Alles auswählen
vector<void*> data; data.push_back(&myData); myType myData2 = (myData)*data.pop_back();
Ich brauche es für mysql Ergebnis, wenn die Spalten durchiteriert werden gibt es verschiedene Datentypen die abgefragt werden, ich kann sie dann bequem in der Schleife zu einem Wörterbuch hinzufügen, Spaltenbezeichnung sowie den dazugehörigen Inhalt kann ich dann aus der Abfrage auslesen.Nemo hat geschrieben:Von der puren Möglichkeit einmal abgesehen, wozu brauchst du ein solches Verhalten? Ich empfinde die Typsicherheit von C++ eigentlich als Vorteil.
Das Problem von void-Pointer ist, dass du keine Typinformationen mehr hast. Wenn du Daten damit speicherst, hast du keine Möglichkeit die Typen zu erkennen.Ich brauche es für mysql Ergebnis, wenn die Spalten durchiteriert werden gibt es verschiedene Datentypen die abgefragt werden, ich kann sie dann bequem in der Schleife zu einem Wörterbuch hinzufügen, Spaltenbezeichnung sowie den dazugehörigen Inhalt kann ich dann aus der Abfrage auslesen.
Okay, wie sieht es mit dem auto - Datentypen in c++11?cloidnerux hat geschrieben:Das Problem von void-Pointer ist, dass du keine Typinformationen mehr hast. Wenn du Daten damit speicherst, hast du keine Möglichkeit die Typen zu erkennen.
Besser ist es, eine Basisklasse anzulegen, deine Datentypen davon ableiten und mit Basisklassenpointern arbeiten.
So kannst du ein Typ-Feld oder ähnliches einbauen und so immer den Datentyp erkennen.
Diese "Technik" nennt sich Boxing und entspricht mehr oder weniger - wie schon geschrieben - dem Void-Pointer. Da alles von object erbt, C# vorrangig mit Referenzen arbeitet, könntest Du alle Deine Objekte, die Du listen möchtest von einer class Object erben lassen.canlot hat geschrieben:Hallo ich habe eine Frage und zwar ist es in C# möglich einen von allen Datentypen verwendetet Datentypen zu verwenden.beides funktioniert in c#.Code: Alles auswählen
objekt var = "Hallo"; var = 5;
Code: Alles auswählen
class Object
{
public:
virtual ~Object(); // <- wichtig!
};
class Double : public Object
{
double Value;
public:
Double( double value ) : Value( value ) {}
};
Nun kannst Du hingehen und Deine Liste konstruieren:canlot hat geschrieben:Was ich aber eher bezwecken möchte:Wie kann ich das gleiche in C++ realisieren?Code: Alles auswählen
List<objekt> variablen = new List<objekt>(); variablen.Add("Erste"); variablen.Add(2);
Code: Alles auswählen
class ObjectList
{
std::list< Object * > Elements;
public:
void Add( char const * value ) { Elements.Add( new String( value ) ); }
void Add( Double * value ) { Elements.Add( new Double( value ) ); }
void Add( Integer * value ) { Elements.Add( new Integer( value ) ); }
...
};
Code: Alles auswählen
std::list< Object * > Elements;
Code: Alles auswählen
std::list< std::shared_ptr< Object > > Elements;