Tôi đã cố gắng sử dụng lệnh std :: shared_pointer với deleter. Tôi đã cố gắng sử dụng một hàm thành viên làm deleter. Tuy nhiên nó không thể biên dịch được. Trình biên dịch đã cho tôi một thông báo lỗi nhưng tôi không thể hiểu tại sao nó không hoạt động. Có ai biết tại sao nó không hoạt động? Cảm ơn nhiều.con trỏ hàm thành viên trong hàm tạo
đang Giản đang theo,
#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;
}
};
Các thông báo lỗi từ trình biên dịch được sau,
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.
Cảm ơn bạn Yam Marcovic. – mora