JNetLibray
로딩중...
검색중...
일치하는것 없음
Job.h
이 파일의 문서화 페이지로 가기
1#pragma once
2
3#include <iostream>
4#include <functional>
5#include <memory>
6
7// 받고자 하는 Job 함수의 람다 타입 자체가 인자를 받는 것도 아니고, 반환이 있는 것도 아니다.
8using CallbackType = std::function<void()>;
9
10class Job
11{
12public:
13 Job(CallbackType&& callback)
14 : m_Callback(std::move(callback))
15 {}
16
17 // 이 생성자와 일치 예상
18 template<typename T, typename Ret, typename... Args>
19 Job(std::shared_ptr<T> obj, Ret(T::* method)(Args...), Args&&... args)
20 {
21 m_Callback = [obj, method, args...]()
22 {
23 (obj.get()->*method)(args...);
24 };
25 }
26
27 // 명시적으로 std::shared_ptr을 받는 생성자
28 template <typename T>
29 Job(std::shared_ptr<T> obj) {
30 std::cout << "Job 생성자 호출!" << std::endl;
31 }
32
33 void Execute() {
34 m_Callback();
35 }
36
37private:
39};
40
std::function< void()> CallbackType
Definition Job.h:8
Definition Job.h:11
Job(std::shared_ptr< T > obj, Ret(T::*method)(Args...), Args &&... args)
Definition Job.h:19
void Execute()
Definition Job.h:33
Job(std::shared_ptr< T > obj)
Definition Job.h:29
CallbackType m_Callback
Definition Job.h:38
Job(CallbackType &&callback)
Definition Job.h:13