我在两个模板上的标题中收到错误.两者都有类似的声明和定义如下:
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)
我不明白为什么我在这些上得到这个错误.有人有想法吗?
谢谢,熊
您缺少第二个函数的函数参数的返回类型.
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)