通用委托的 C++/CLI 编译错误
C++/CLI Compilation error with generic delegate
我目前正在使用 C++/CLI 进行一些工作,遇到了以下代码的奇怪编译错误:
private ref class LinqHelper abstract sealed
{
public:
generic<typename T, typename U> static Func<T, U>^ Cast()
{
return gcnew Func<T, U>(&LinqHelper::Cast);
}
private:
generic<typename T, typename U> static U Cast(T val)
{
return safe_cast<U>(val);
}
};
error C3352: 'Cast' : 指定的函数与委托类型不匹配 'U (T)'
更具体地说,有问题的代码行是:
return gcnew Func<T, U>(&LinqHelper::Cast);
我发现自己无法解释这个错误。我传递给 Func 委托构造函数的 Cast 静态成员函数具有所需的签名,即 U Cast(T val).
有人可以帮我解释一下吗?
如果有任何帮助:我正在使用 VS 2015 并且 C++/CLI 项目正在引用 .NET Framework v4.5.2。
谢谢
编译器不愿意为 Cast 方法推断类型参数。糟糕的错误消息,在 C++/CLI 中并不少见。修复:
return gcnew Func<T, U>(&LinqHelper::Cast<T, U>);
我目前正在使用 C++/CLI 进行一些工作,遇到了以下代码的奇怪编译错误:
private ref class LinqHelper abstract sealed
{
public:
generic<typename T, typename U> static Func<T, U>^ Cast()
{
return gcnew Func<T, U>(&LinqHelper::Cast);
}
private:
generic<typename T, typename U> static U Cast(T val)
{
return safe_cast<U>(val);
}
};
error C3352: 'Cast' : 指定的函数与委托类型不匹配 'U (T)'
更具体地说,有问题的代码行是:
return gcnew Func<T, U>(&LinqHelper::Cast);
我发现自己无法解释这个错误。我传递给 Func 委托构造函数的 Cast 静态成员函数具有所需的签名,即 U Cast(T val).
有人可以帮我解释一下吗?
如果有任何帮助:我正在使用 VS 2015 并且 C++/CLI 项目正在引用 .NET Framework v4.5.2。
谢谢
编译器不愿意为 Cast 方法推断类型参数。糟糕的错误消息,在 C++/CLI 中并不少见。修复:
return gcnew Func<T, U>(&LinqHelper::Cast<T, U>);