错误:C2988:无法识别的模板声明/定义

Bea*_*645 5 c++ templates

我在两个模板上的标题中收到错误.两者都有类似的声明和定义如下:

template <typename T1, typename T2> void setVideoCodecOption(T1 AVCodecContext::*option, T2 (CR2CVideoCodecSettings::*f)() const);

template <typename T1, typename T2>
void EncoderPrivate::setVideoCodecOption(T1 AVCodecContext::*option, (CR2CVideoCodecSettings::*f)() const)
{
    T2 value = (m_videoSettings.*f)();
    if (value != -1) {
        m_videoCodecContext->*option = (m_videoSettings.*f)();
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我在这些上得到这个错误.有人有想法吗?

谢谢,熊

Nat*_*ica 5

您缺少第二个函数的函数参数的返回类型.

template <typename T1, typename T2>
void EncoderPrivate::setVideoCodecOption(T1 AVCodecContext::*option, (CR2CVideoCodecSettings::*f)() const)
Run Code Online (Sandbox Code Playgroud)

应该

template <typename T1, typename T2>
void EncoderPrivate::setVideoCodecOption(T1 AVCodecContext::*option, T2 (CR2CVideoCodecSettings::*f)() const)
                                                                     ^^^added return type
Run Code Online (Sandbox Code Playgroud)