006
22.06.2010, 11:12 Uhr
0xdeadbeef
Gott (Operator)
|
Wenn's kein Zeiger ist, kannst du's nicht in delete schmeißen.
Das ganze ist ein bisschen eine Designfrage. Natürlich kann man prinzipiell etwas wie
C++: |
template<typename T> void remove_from_heap(T) { } template<typename T> void remove_from_heap(T* p) { delete p; }
// ...
T tmp = at(i); erase(begin() + i); remove_from_heap(tmp);
|
machen, aber es scheint mir etwas gewagt, einen Container zu bauen, der abhängig vom Werttyp versucht, seine Daten vom Heap zu löschen - meines Erachtens wärst du mit zwei verschiedenen Typvorlagen oder einer Strategy-Pattern besser dran. Dieser Plan kann dir böse in die Hose gehen, wenn du nicht sehr deutlich kommunizierst, dass und warum
C++: |
VectorSecure<int> vi; VectorSecure<int*> vp;
int x = 2;
vi.push_back(x); vi.push_back(&x);
|
nicht vorgesehen ist. Oder auch
C++: |
VectorSecure<int*> vp;
vp.push_back(new int[10]); // Ups.
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 22.06.2010 um 11:13 Uhr von 0xdeadbeef editiert. |