消息关闭
    暂无新消息!
class MyClass
{
public:
int getData() { return data; }
static std::shared_ptr<MyClass> getInstance() { return ptrGM; };
private:
MyClass();
~MyClass();
int data;
static std::shared_ptr<MyClass> ptrGM;

};
//std::shared_ptr<MyClass> MyClass::ptrGM(new MyClass())
//std::shared_ptr<MyClass> MyClass::ptrGM = std::make_shared<MyClass>();


这里我想做一个单例,想把new出来的地址保存在智能指针里,但是会报错:
错误 C2248 “MyClass::~MyClass”: 无法访问 private 成员(在“MyClass”类中声明)
当然我吧构造和析构放public就没问题了,但那样外部还是可以创建单例对象
难道这里只能用new 和 delete?

1个回答

︿ 1
智能指针要访问类的析构函数。
你的构造private,但析构要public