String-Array
-
Hallo,
ich habe eine Klasse, welche ich in eine *.h und eine *.c- Datei aufgeteilt habe (wies halt so üblich ist)
ind der *.h- Datei habe ich folgendes stehen:class A { public: Class A(); ~Class A(); string ipAdressen[3]; void fillipAdressen(); };in der *.c- Datei steht folgendes:
A::A() { // also, wenn ein Objekt diese Klasse erzeugt wird, dann sollei die ipAdressen initialisiert werden fillipAdressen(); } A::fillipAdressen() { ipAdressen[3] = {"10.0.0.1", "10.0.0.2", "10.0.0.3"}; }wenn ich jetzt nach dem initialisieren auf ipAdressen mit ipAdressen[1] zugreife, dann steht in diesem Array nichts drinnen,
Kann sich das jemand erklären??
Vielen Dank für Eure Antworten,
lg
-
Achte mal auf die Syntax, die Du selbst benutzt: Du weist ipAdressen[3] irgendetwas zu, wieso sollte dann in ipAdressen[1] etwas drinstehen?
C++ ist keine "Do what I mean"-Sprache, die rät was Du gerade möchtest.

Die Lösung des Problems ist eigentlich: Arrays kann man so nicht zuweisen.
-
soweit ich weiß müsstest du es so machen
A::fillipAdressen() { ipAdressen[0] = "10.0.0.1"; ipAdressen[1] = "10.0.0.2"; ipAdressen[2] = "10.0.0.3"; }sobald es aber mehr als 5 ip´s werden, dann wird die sache umständlich so wie ich es gezeigt habe, aber für die 3 ist das eigentlich ausreichend
-
Zwei mögliche Alternativen:
1. Die IP-Adressen ändern sich niemals:
class A { public: Class A(); ~Class A(); static const string ipAdressen[3]; }; // *.cpp const string A::ipAdressen = { ... };2. Die IP-Adressen sind Defaults, die geändert werden können:
class A { public: Class A(); ~Class A(); string ipAdressen[3]; void fillipAdressen(); }; // *.cpp static char const* ipDefaults[] = { ... }; A::A() { // also, wenn ein Objekt diese Klasse erzeugt wird, dann sollei die ipAdressen initialisiert werden fillipAdressen(); } A::fillipAdressen() { // evtl noch // BOOST_STATIC_ASSERT( sizeof(ipDefaults)/sizeof(*ipDefaults) == sizeof(ipAdressen)/sizeof(*ipAdressen) std::copy(ipDefaults, ipDefaults + sizeof(ipDefaults)/sizeof(*ipDefaults), ipAdressen); }