c++ - 模板中定义类型未知的函数
天蓬老师
天蓬老师 2017-04-17 15:18:49
0
1
609

请问如何在一个模板中定义类型未知的函数呢?
我需要将一段程序的多个步骤和其中的某个操作分离,比如说:

#include <iostream>

template <typename T>
T adder(T a, T b)
{
    return a + b;
}

template <T F(T, T)>    //--- Here
T executor(T a, T b)
{
    return F(a, b);
}

int main()
{
    std::cout << executor<adder>(1, 2);
    std::cout << executor<adder>(3.0f, 4.0f);
    return 0;
}

但是上面template <T F(T, T)>中的T是不能被编译器识别的,怎样解决这个问题呢?

我自己找到答案了,这个贴就让沉掉吧(不知道怎么关闭╮(╯▽╰)╭):

#include <iostream>

template <typename T>
T adder(T a, T b)
{
    return a + b;
}

template <typename T, T F(T, T)>
T executor(T a, T b)
{
    return F(a, b);
}

int main()
{
    std::cout << executor<int, adder>(1, 2);
    std::cout << executor<float, adder>(3.0f, 4.0f);
    return 0;
}
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(1)
刘奇

여기서는 실행기 유형을 추론하기 전에 먼저 가산기 유형을 결정해야 합니다. 소스 프로그램에서 가산기의 종류는 실행기의 함수 매개변수에 따라 결정되는데, 시퀀스를 도출하는데 문제가 있으므로 수동으로 가산기의 종류를 부여하면 해결할 수 있다. 물론 더 좋은 방법이 있을까요?

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿