()-Operator + dynamic class
-
Logische Konsequenz schrieb:
Btw: Pointer verwendet heuzutage niemand mehr...
Falsch. Du magst recht liegen wenn es um die Datenhaltung geht, aber es gibt auch Verweise die mit normalen Zeigern sinnvoll sind.
Edit: Und selbst bei der Datenhaltung gibt es noch Alternativen zu den Smartpointern (z.B. die Pointercontainer von Boost).
-
x->("Bla"); (*x)("Bla");Hatte ich beides schon ausprobiert..
Da meckert der Compiler zwar nicht mehr, aber das Programm verreckt..?
-
@asc: ich gebe zu, das war etwas überspitzt formuliert (verwende selber ab und zu Pointer).
-
NEO.PIXEL schrieb:
Da meckert der Compiler zwar nicht mehr, aber das Programm verreckt..?
Ungültiges Objekt? Fehler im Operator?
Debugger benutzt um zu prüfen wo genau der Absturz ist?
-
Folgender Code:
struct XYZ { int operator() (const std::string& str) { std::cout << str << " = "; return 42; } }; int main() { XYZ *x = new XYZ; std::cout << (*x)("hallo") << std::endl; }funktioniert bei mir ohne Probleme, der Fehler muss woanders liegen.
-
Bei mir jetzt auch..
Hab einen Vector gößer eingeschätzt als er eigentlich ist und denn dann versucht auszugeben..
*peinlich*

Aber danke für die schnelle Hilfe

-
dafür haben vectoren die funktion end()
-
Iteratoren! schrieb:
dafür haben vectoren die funktion end()
Und size()
-
Ich weiß.. Die Ausgabe war auch nur zu Testzwecken und da hab ich dann einfach mal geraten

Naja aus Fehlern lernt man
-
Geraten ist gut:
// mal schauen, ob ich eine Ausgabe erhalte -) for(int i=42; i<4711; ++i) cout << v[i];
-
NEO.PIXEL schrieb:
int main() { XYZ* x = new x; int i = x("BLA"); }Wo gibst du den Speicher wieder frei? Auch wenn es nur ein Minimalbeispiel ist, würde ich mir saubere Deallokation immer gleich angewöhnen.

-
Das vermisste 'delete' ist im Programm natürlich vorhanden.. Das hier war ein minimales Minimalbeispiel
