Der Kopierkonstruktor funktioniert. Was ist wenn ich nun aber die größe eines weiteren Objektes anzeigen lasse? Ich habe den Kopierkonstrukor als Vorlage genommen und das hier probiert.
Hintergrundgedanke war hier ähnlich wie beim Kopierkonstruktor das ich die Größe des übergebenen Objekts sehen kann. Es wird eine 4 ausgegeben obwohl ich 20 Felder erstellt habe. Denke ich hier komplett in die falsche Richtung?
Wenn ich unter main() nun feld f1(10) und feld f2(15) erzeuge und dann eine Funktion für sizeof hätte, woher sollte die dann wissen auf welches Objekt ich mich beziehe ? Versteht ihr was meine Anliegen ist ?
ich glaub sizeof wird schon bestimmt bevor das proggie läuft, also schon beim compilieren... wenn du da was dynamsich vergrösserst hilft dir das glaube ich nicht wirklich, weils ja schon zur laufzeit fix ist...
ich vermute mal um wirklich zu wissen wie gross dein objekt ist müsstest du dir eine ziemlich schmutzige programmierung überlegen.... also quasi so mit zeiger holen nach void casten und dann das letzte element im array und dann wieder nach void casten und die differenz der addressen ist dann deine grösse...problem ist dann auch noch wenn die sachen nicht hintereinander im speicher liegen...
kann aber sein das ich auch völlig falsch liege aber ich würde sowas vermuten... -- ...fleißig wie zwei WeißbroteDieser Post wurde am 10.01.2004 um 18:46 Uhr von Windalf editiert.
Ich denke, m_data ist ein pointer, sizeof(pointer) ist bei 32bit normalerweise 4. Warum nicht:
C++:
int feld::sizeoffeld(const feld& size_cp_feld) { return(sizeof(*size_cp_feld.m_data) * size_cp_feld.m_size); }
Damit hast du dann die Anzahl Bytes, die das gesamte Feld belegt (wenn m_size die Länge deines Feldes darstellt). -- Wer früher stirbt ist länger tot.Dieser Post wurde am 10.01.2004 um 18:56 Uhr von (un)wissender editiert.
HI, danker erstmal für die schnelle Antwort. Habe jetzt mal
C++:
double sizeoffeld() { return (sizeof(m_data)); }
probiert und das im main über die objekte aufgerufen. Also... f2.sizeoffeld(); Komm aber das gleiche raus wie bei dem da oben. Von void casten usw. hab ich keine Ahnung. Also laß ich das jetzt ersteinmal.
Ich glaube, sizeof kann man nicht überladen, da es zur Compilezeit ermittelt wird. Deshalb solltest du es mit einer eigene Methode machen, evtl. wie in meinem Beipsiel. -- Wer früher stirbt ist länger tot.
Ach so, das ist es also, und ich frage mich schon seid 10 Jahren, was ich falsch mache. @virtual hat dafür sicherlich auch einen Standard, darum ist er auch erfolgreicher als ich (Ich glaube, er hat eine kleine Tochter). -- Wer früher stirbt ist länger tot.