c_cpp 创造资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 创造资源相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <bitset>
#include <vector>
#include <map>
#include <algorithm>
#include <memory>

template<typename Creator, typename Destructor, typename... Arguments>
auto make_resource(Creator c, Destructor d, Arguments&&... args){
    auto r = c(std::forward<Arguments>(args)...);
    if (!r) {throw std::runtime_error{"Unable to create resource"};}

    typedef typename std::decay<decltype(*r)>::type ResourceType;
    return std::unique_ptr<ResourceType, void(*)(ResourceType*)>(r,d);
}

class Foo {
private:
    int _a;
public:
    Foo(int a){
        std::cout << "constructor Foo\n";
        _a = a;
    }

    ~Foo(){
        std::cout << "destructor Foo\n";
    }

    int getA(){
        return _a;
    }
};

Foo *createFoo(int a) {
    std::cout << "createFoo\n";
    return new Foo(a);
}

void deleteFoo(Foo* foo){
    std::cout << "deleteFoo\n";
    delete foo;
}

int main() {
    auto foo = make_resource(createFoo, deleteFoo, 20);
    std::cout << foo->getA() << '\n';
    return 0;
}

以上是关于c_cpp 创造资源的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 人力资源阵列左转

c_cpp 人力资源道路和图书馆

c_cpp 设有Ñ个活动的集合E = {1,2,...,N},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源每个。活动i都有一个要求使用该资源的起始时

“云计算”将创造未来互联网新生活(幸福的云家人)

Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感

人脉经营