Runnable 함수용 C ++ 템플릿

Androider

내 앱에 C ++를 사용하여 스레드 관리를위한 라이브러리를 작성 중이며 FunctionPointer실행 함수 내에서 실행 되는 템플릿 클래스를 작성하려고 합니다. 저는 Java 개발자이며 다음과 같이 시각화하려고합니다.

class MyRunnable : public Runnable {

    public:
        MyRunnable(fp)
        {
            mFp = fp;
        }

    private:

    FunctionPointer mFp;

    // Will be called by the thread pool using a thread
    void run() 
    {
         mFp();
    }

}

class ThreadManager {

    public:
        void execute(MyRunnable runnable) {
            executeOnAThreadPool(runnable);
        }

}

C ++ 구문에 능숙하지 않기 때문에 .NET Framework에 대한 FunctionPointer인수의 가변 개수로 인수 를 사용하도록 생성자를 정의하기가 어렵 습니다 FunctionPointer. 다음과 같은 것 :

MyRunnable(Fp fp, Args... args)

누군가 MyRunnable위의 클래스 생성자를 정의하는 데 도움을 줄 수 있습니까 ? 감사.

max66

확실하지 않습니다 ...하지만 당신이 뭔가를 찾고있는 것 같습니다.

class MyRunnable
 {
   private:
      std::function<void()> mF;

   public:       
      template <typename F, typename ... Args>
      MyRunnable (F && f, Args && ... args)
       : mF{ [&f, &args...](){ std::forward<F>(f)(std::forward<Args>(args)...); } }
       { }

      void run ()
       { mF(); }
 };

다음은 전체 컴파일 예제입니다.

#include <iostream>
#include <functional>

class MyRunnable
 {
   private:
      std::function<void()> mF;

   public:       
      template <typename F, typename ... Args>
      MyRunnable (F && f, Args && ... args)
       : mF{ [&f, &args...](){ std::forward<F>(f)(std::forward<Args>(args)...); } }
       { }

      void run ()
       { mF(); }
 };

void foo (int a, long b, std::string const & c)
 { std::cout << "executing foo() with " << a << ", " << b << ", " << c << '\n'; }

int main ()
 {
   MyRunnable  mr{foo, 1, 2l, "three"};

   std::cout << "before run" << '\n';

   mr.run();

 }

그 인쇄

before run
executing foo() with 1, 2, three

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

함수 인수 용 C ++ 템플릿 팩

분류에서Dev

C ++ 공용 함수의 템플릿

분류에서Dev

템플릿 함수 내에서 템플릿 함수 추론 (C ++ 개념 사용)

분류에서Dev

가변 템플릿 인수로 C ++ 템플릿 함수 별칭

분류에서Dev

클래스 템플릿에서 함수 템플릿을 사용하는 C ++

분류에서Dev

템플릿 함수를 사용한 C ++ 템플릿 메타 프로그래밍

분류에서Dev

템플릿 클래스의 템플릿 함수 포인터-C ++

분류에서Dev

템플릿 함수의 C ++ 템플릿 클래스 멤버

분류에서Dev

C ++ 템플릿 함수 유형 추론

분류에서Dev

C ++ 반환 템플릿 함수

분류에서Dev

템플릿의 C ++ 함수 포인터

분류에서Dev

템플릿의 C ++ 함수 포인터

분류에서Dev

템플릿 함수 오버로딩 C ++

분류에서Dev

템플릿 함수 C ++ 호출 오류

분류에서Dev

C ++ 템플릿 최소 함수

분류에서Dev

C ++ / CLI의 함수 템플릿

분류에서Dev

템플릿을 평가하는 C ++ 템플릿 매개 변수 (템플릿 템플릿 매개 변수)

분류에서Dev

C ++ 템플릿을 사용하여 JNI 함수 생성

분류에서Dev

템플릿 인수의 C ++ 템플릿 인수

분류에서Dev

C ++ 오류 : 함수 템플릿에서 기본 템플릿 인수를 사용할 수 없습니다.

분류에서Dev

템플릿 함수에 대한 C ++ 템플릿 하위 클래스 인수

분류에서Dev

C ++ 비 형식 템플릿 템플릿 매개 변수, * this 참조

분류에서Dev

C ++ 템플릿 함수 오류 : 템플릿 ID가 템플릿 선언과 일치하지 않습니다.

분류에서Dev

템플릿 함수 오류가있는 C ++ 조건부 템플릿 유형

분류에서Dev

Visual C ++에서 템플릿 함수의 템플릿이 잘못된 이유

분류에서Dev

튜플의 각 요소에 템플릿 함수를 적용하는 C ++

분류에서Dev

동일한 템플릿 구조 함수 내에서 템플릿 템플릿 매개 변수로 전달되는 C ++ 템플릿 자체 이름

분류에서Dev

C ++에서 템플릿 사용

분류에서Dev

C ++ 템플릿 압축 매개 변수

Related 관련 기사

  1. 1

    함수 인수 용 C ++ 템플릿 팩

  2. 2

    C ++ 공용 함수의 템플릿

  3. 3

    템플릿 함수 내에서 템플릿 함수 추론 (C ++ 개념 사용)

  4. 4

    가변 템플릿 인수로 C ++ 템플릿 함수 별칭

  5. 5

    클래스 템플릿에서 함수 템플릿을 사용하는 C ++

  6. 6

    템플릿 함수를 사용한 C ++ 템플릿 메타 프로그래밍

  7. 7

    템플릿 클래스의 템플릿 함수 포인터-C ++

  8. 8

    템플릿 함수의 C ++ 템플릿 클래스 멤버

  9. 9

    C ++ 템플릿 함수 유형 추론

  10. 10

    C ++ 반환 템플릿 함수

  11. 11

    템플릿의 C ++ 함수 포인터

  12. 12

    템플릿의 C ++ 함수 포인터

  13. 13

    템플릿 함수 오버로딩 C ++

  14. 14

    템플릿 함수 C ++ 호출 오류

  15. 15

    C ++ 템플릿 최소 함수

  16. 16

    C ++ / CLI의 함수 템플릿

  17. 17

    템플릿을 평가하는 C ++ 템플릿 매개 변수 (템플릿 템플릿 매개 변수)

  18. 18

    C ++ 템플릿을 사용하여 JNI 함수 생성

  19. 19

    템플릿 인수의 C ++ 템플릿 인수

  20. 20

    C ++ 오류 : 함수 템플릿에서 기본 템플릿 인수를 사용할 수 없습니다.

  21. 21

    템플릿 함수에 대한 C ++ 템플릿 하위 클래스 인수

  22. 22

    C ++ 비 형식 템플릿 템플릿 매개 변수, * this 참조

  23. 23

    C ++ 템플릿 함수 오류 : 템플릿 ID가 템플릿 선언과 일치하지 않습니다.

  24. 24

    템플릿 함수 오류가있는 C ++ 조건부 템플릿 유형

  25. 25

    Visual C ++에서 템플릿 함수의 템플릿이 잘못된 이유

  26. 26

    튜플의 각 요소에 템플릿 함수를 적용하는 C ++

  27. 27

    동일한 템플릿 구조 함수 내에서 템플릿 템플릿 매개 변수로 전달되는 C ++ 템플릿 자체 이름

  28. 28

    C ++에서 템플릿 사용

  29. 29

    C ++ 템플릿 압축 매개 변수

뜨겁다태그

보관