Ich habe versucht, std :: shared_pointer mit Deleter zu verwenden. Ich habe versucht, eine Member-Funktion als Deleter zu verwenden. Es konnte jedoch nicht kompiliert werden. Compiler gab mir eine Fehlermeldung, aber ich konnte nicht verstehen, warum es nicht funktioniert hat. Weiß jemand, warum es nicht funktioniert hat? Vielen Dank.Mitglied Funktionszeiger in Konstruktor
Simplified Code folgt,
#include <memory>
class MemberFunctionPointerInConstructor {
public:
MemberFunctionPointerInConstructor(void) {
std::shared_ptr<int> a = std::shared_ptr<int>(new int(1), deleter); // this line makes a compiler error message
}
void deleter(int* value) {
delete value;
}
};
Die Fehlermeldung von Compiler wird wie folgt,
error: invalid use of non-static member function
std::shared_ptr<int> a = std::shared_ptr<int>(new int(1), deleter);
^
Thank you very much.
Danke Yam Marcovic. – mora