小编Jim*_* Su的帖子

为什么我不能在静态函数中访问私有构造函数,如下所示?

我目前正在编写一个弱引用资源管理器,如下所示,编译器抱怨Manager有一个私有构造函数.

我的问题是:为什么我不能在静态函数中访问私有成员函数?

#ifndef TENSOR_MANAGER_H
#define TENSOR_MANAGER_H

#include <memory>
#include <functional>
#include <map>
#include <iostream>

template<typename key_t, typename model_t>
class Manager : public std::enable_shared_from_this<Manager<key_t, model_t> > {
public:
    using self_t = Manager<key_t, model_t>;

public:
    static auto Create() {
        return std::make_shared<self_t>();
    }

public:

    std::shared_ptr<model_t> GetOrAdd(const key_t &&key, const char *data, size_t size) {
        auto pos = m_resources.find(key);
        std::shared_ptr<model_t> tmp;
        if (pos != m_resources.end()) {
            tmp = pos->second.lock();
        }
        if (!tmp) {
            model_t *p = new model_t();

            auto deletor = std::bind(&self_t::releaseItem,
                                     std::weak_ptr<self_t>(this->shared_from_this()),
                                     key, …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
2
解决办法
476
查看次数

标签 统计

c++ ×1