다른 매개 변수가있는 함수를 함수 매개 변수로 사용하는 방법

사용자 이름

제목이 좀 헷갈릴 수 있으니 좀 더 명확하게 설명하겠습니다.

다음과 같은 수업이 있습니다.

class foo
{
public:

   foo(%Some function% *) { %Some function pointer% = %Some function%; }

   %Some output% callFunction(%Some input%);

private:

   %Some function pointer% bar;
}

가급적이면 %Some function pointer%클래스 전체에서 사용하기 위해 주어진 함수를 저장할 수 있기를 원 하지만 이것은 필요하지 않습니다.

그래서 내 주요 질문은 : 어떻게 함수 매개 변수와 함께 모든 함수를 입력으로 callFunction받을 수 있는 실제 만들 있습니까?

도움을 주시면 감사하겠습니다!

기욤 라시 콧

반환 및 매개 변수 유형이 무엇인지 어딘가에 알아야합니다. 클래스 또는 템플릿 매개 변수에서 수정되었습니다.

다음은 고정 클래스의 예입니다.

struct foo {
    foo(std::function<int(std::string, double)> func) : bar{std::move(func)} {}

    int callFunction(std::string s, double d) {
        bar(std::move(s), d);
    }

private:
    std::function<int(std::string, double)> bar;
};

이 메서드는 함수 포인터뿐만 아니라 람다와 같은 함수와 유사한 객체도 허용합니다.

유형을 수정하지 않으려면 템플릿을 사용하여 래핑하려는 함수 객체의 유형을 지정할 수 있습니다.

template<typename F>
struct foo {
    foo(F func) : bar{std::move(func)} {}

    template<typename... Args>
    auto callFunction(Args&&... args) -> decltype(bar(std::declval<Args>()...)) {
        return bar(std::forward<Args>(args)...);
    }

private:
    F bar;
};

template<typename F>
auto make_foo(F f) {
    return foo<F>{std::move(f)};
}

이 방법은 모든 함수 또는 함수와 유사한 객체를 허용하며 std::function오버 헤드를 끌지 않기 때문에 다른 솔루션보다 빠릅니다 . 여기서 단점은 make_foo이전 C ++ 17 을 사용해야한다는 것 입니다.

그런 다음 위의 솔루션을 다음과 같이 사용할 수 있습니다.

auto f1 = make_foo([](int i){ return i * 1.5; });
auto f2 = make_foo([]{});

double result = f1.callFunction(12);
f2.callFunction();

C ++ 17 스위치를 켜면 다음과 같이 작성할 수 있습니다.

foo f1 = [](int i){ return i * 1.5; };
foo f2 = []{};

double result = f1.callFunction(12);
f2.callFunction();

그 참고 f1하고 f2여전히 다른 유형의 인스턴스입니다. 공제를 통해 템플릿 매개 변수가 숨겨집니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 함수가있는 함수를 매개 변수로 사용 :

분류에서Dev

한 함수에서 다른 함수로 매개 변수를 보내는 방법

분류에서Dev

함수를 매개 변수로 사용하는 랩 방법

분류에서Dev

다른 매개 변수로 함수를 반복해서 실행하는 방법

분류에서Dev

Kotlin의 다른 함수에서 매개 변수를 사용하여 함수를 호출하는 방법

분류에서Dev

JavaScript를 사용하는 매개 변수를 사용하여 한 함수에서 다른 함수로 변수를 전달하는 방법

분류에서Dev

angularJS 매개 변수로 함수를 평가하는 방법

분류에서Dev

다른 함수에서 매개 변수로 전달되는 함수를 호출하는 방법

분류에서Dev

다른 함수에서 .then의 setState를 ReactJS의 매개 변수로 사용하는 방법

분류에서Dev

다른 클래스 메서드에서 클래스 함수를 매개 변수로 사용하는 방법

분류에서Dev

함수 : 열을 매개 변수로 사용하는 방법?

분류에서Dev

다른 함수를 매개 변수로 사용하는 함수, "일치하는 함수 없음 오류"C ++

분류에서Dev

변수 인수를 다른 함수에 대한 매개 변수로 사용하는 함수

분류에서Dev

Lua-객체의 함수를 매개 변수로 다른 함수에 전달하는 방법

분류에서Dev

함수를 다른 함수에 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

일반 함수를 매개 변수로 다른 함수에 전달하는 방법은 무엇입니까?

분류에서Dev

반응에서 매개 변수로 매개 변수를 함수 전달에 다시 보내는 방법

분류에서Dev

다른 함수 내에서 매개 변수와 함께 함수의 반환 값을 사용하는 방법

분류에서Dev

템플릿 함수가 매개 변수 팩을 사용할 때 다른 템플릿 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

다른 매개 변수로 매핑하는 방법-Ruby

분류에서Dev

PHP를 사용하여 다른 방식으로 함수 매개 변수가 비어 있지 않은지 확인

분류에서Dev

Scala에서 이름 매개 변수로 호출을받는 함수가 다른 함수를 매개 변수로 취하는 함수와 다른가요?

분류에서Dev

매개 변수를 함수로 형식화하는 방법

분류에서Dev

매개 변수로 함수를 선언하는 방법

분류에서Dev

함수를 매개 변수로 전달하는 방법

분류에서Dev

함수를 매개 변수로 사용하는 함수

분류에서Dev

$ _GET 매개 변수와 함께 $ routeProvider를 사용하는 방법

분류에서Dev

모델 정보를 함수 매개 변수로 사용하는 방법

분류에서Dev

함수 매개 변수로 사용할 Closure를 선언하는 방법

Related 관련 기사

  1. 1

    다른 함수가있는 함수를 매개 변수로 사용 :

  2. 2

    한 함수에서 다른 함수로 매개 변수를 보내는 방법

  3. 3

    함수를 매개 변수로 사용하는 랩 방법

  4. 4

    다른 매개 변수로 함수를 반복해서 실행하는 방법

  5. 5

    Kotlin의 다른 함수에서 매개 변수를 사용하여 함수를 호출하는 방법

  6. 6

    JavaScript를 사용하는 매개 변수를 사용하여 한 함수에서 다른 함수로 변수를 전달하는 방법

  7. 7

    angularJS 매개 변수로 함수를 평가하는 방법

  8. 8

    다른 함수에서 매개 변수로 전달되는 함수를 호출하는 방법

  9. 9

    다른 함수에서 .then의 setState를 ReactJS의 매개 변수로 사용하는 방법

  10. 10

    다른 클래스 메서드에서 클래스 함수를 매개 변수로 사용하는 방법

  11. 11

    함수 : 열을 매개 변수로 사용하는 방법?

  12. 12

    다른 함수를 매개 변수로 사용하는 함수, "일치하는 함수 없음 오류"C ++

  13. 13

    변수 인수를 다른 함수에 대한 매개 변수로 사용하는 함수

  14. 14

    Lua-객체의 함수를 매개 변수로 다른 함수에 전달하는 방법

  15. 15

    함수를 다른 함수에 매개 변수로 전달하는 방법은 무엇입니까?

  16. 16

    일반 함수를 매개 변수로 다른 함수에 전달하는 방법은 무엇입니까?

  17. 17

    반응에서 매개 변수로 매개 변수를 함수 전달에 다시 보내는 방법

  18. 18

    다른 함수 내에서 매개 변수와 함께 함수의 반환 값을 사용하는 방법

  19. 19

    템플릿 함수가 매개 변수 팩을 사용할 때 다른 템플릿 매개 변수를 전달하는 방법은 무엇입니까?

  20. 20

    다른 매개 변수로 매핑하는 방법-Ruby

  21. 21

    PHP를 사용하여 다른 방식으로 함수 매개 변수가 비어 있지 않은지 확인

  22. 22

    Scala에서 이름 매개 변수로 호출을받는 함수가 다른 함수를 매개 변수로 취하는 함수와 다른가요?

  23. 23

    매개 변수를 함수로 형식화하는 방법

  24. 24

    매개 변수로 함수를 선언하는 방법

  25. 25

    함수를 매개 변수로 전달하는 방법

  26. 26

    함수를 매개 변수로 사용하는 함수

  27. 27

    $ _GET 매개 변수와 함께 $ routeProvider를 사용하는 방법

  28. 28

    모델 정보를 함수 매개 변수로 사용하는 방법

  29. 29

    함수 매개 변수로 사용할 Closure를 선언하는 방법

뜨겁다태그

보관