Erzwingen, dass eine Klasse auf dem Stack erzeugt wird?
-
Gar nicht so ne blöde Frage... Ich möchte ein paar Klassen per PImpl Idiom erstellen, bei der die öffentliche Schnittstelle automatisches reference counting für die Implementation übernimmt. Schaden würde es nicht, wenn die Klasse (das Interface) auf dem Heap angelegt wird, aber dadurch würde ein Stück der Einfachheit und des SmartPointer-Verhaltens der Klasse verloren gehen.
-
Shade Of Mine schrieb:
Bloede Frage: warum willst du das eigentlich?
Auf den Heap zwingen kann Sinn machen, weil man dann delete this; verwenden kann oder aehnliches. Was aber bringt es auf dem Stack?
stell dir mal nen scoped_ptr aufm heap vor
-
otze schrieb:
stell dir mal nen scoped_ptr aufm heap vor
Du meinst sowas hier
scoped_ptr<scoped_ptr<foo> > p(new scoped_ptr<foo>(new foo));
:p
-
weils so schön war: placement new ist nat. völlig unnötig, um der private deklaration von new/delete entgegenzuwirken
class foo { private: void* operator new(size_t); void operator delete(void*) {}; public: foo() { std::cout << "foo\n"; } virtual ~foo() { std::cout << "...foo\n"; } }; int main() { foo *bar = ::new foo; ::delete bar; }
geht auch.