我試圖將std :: shared_pointer與deleter一起使用。我試圖使用成員函數作爲刪除者。但它無法編譯。編譯器給了我一個錯誤消息,但我不明白爲什麼它不起作用。有人知道爲什麼它不起作用嗎?非常感謝你。構造函數中的成員函數指針
簡化代碼如下,
#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;
}
};
從編譯器中的錯誤消息之後,
error: invalid use of non-static member function
std::shared_ptr<int> a = std::shared_ptr<int>(new int(1), deleter);
^
非常感謝你。
謝謝Yam Marcovic。 – mora