006
22.11.2007, 19:10 Uhr
xXx
Devil
|
Hmmm also. Ein Vector ist ja ein Array. Nur ist es ein dynamischer Array. Die "Symptome", die bei dir jetzt auftreten, kommen, meiner Meinung nach, d.h., dass du nie den Umgang mit new ([]) und delete ([]) usw. gelernt hast.
C++: |
abc[0].gebezahlaus();
|
Das geht, wenn abc.size() > 0 ist. Um dann aber nicht direkt eine Zugriffsverletzung zu bekommen, solltest du std::vector<>::at() nehmen, hat den angenehmen Vorteil, das eine Exception geworfen wird:
C++: |
try { abc.at(0).gebezahlaus(); } catch (std::exception& ex) { std::cerr << ex.what() << std::endl; }
|
.
C++: |
test(int a) { m_zahl = a; }
|
Guck dir mal Initialisierungslisten an Aber ja es geht so:
C++: |
abc.push_back(test(5));
|
wie du ja auch in meinem Beispiel ersehen könntest :P
C++: |
abc.push_back(test());
|
geht dann aber natürlich nicht mehr, es sei denn du legst für a einen Default-Value fest
Zitat: |
Ich würde jetzt gerne über abc m_zahl ausgeben, doch nur wie komme ich ran?
|
Naja du hast jetzt da das Problem, das m_zahl nunmal im private-Bereich liegt, du also nicht dran kommst. Deswegen müsstest du deine gebezahlaus-Funktion nutzen. Wenn du jetzt auch schon mit deiner zahlanhaengen-Funktion einen Wert eingefügt hast, kannst du diesen dann auch ausgeben. Beachte dabei aber, dass in C++ der Index bei 0 Anfängt und size - 1 das Ende ist.
C++: |
int array[100]; for (std::size_t i(0); i < 100; ++i) std::cout << array[i] << std::endl;
|
... |