compilation - 通用委托(delegate)的 C++/CLI 编译错误

标签 compilation c++-cli .net-4.5.2

我目前正在使用 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);
    }
};

错误 C3352:“Cast”:指定的函数与委托(delegate)类型“U (T)”不匹配

更具体地说,有问题的代码行是:

return gcnew Func<T, U>(&LinqHelper::Cast);

我发现自己无法解释这个错误。我传递给 Func 委托(delegate)构造函数的 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>);

关于compilation - 通用委托(delegate)的 C++/CLI 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41639234/

相关文章:

c++ - 为什么在没有模板声明编译的情况下包含在模板类中使用模板参数的友元函数的实现?

c# - 如何在托管 C++ 中正确实现带有事件的 C# 接口(interface)

types - 为什么在使用 std::max 和 c++/CLI 时不能编译?

c# - 在C#中使用Entity Framework读取Oracle数据连接

iis-8 - 在 IIS 8.0 中配置 .NET Framework 4.5.2

visual-studio - TFS2010 - 并行构建 - 单一解决方案,单一构建代理

c - 为什么在将矩阵传递给函数时会出现编译错误

android - 当我尝试在SQLite中运行提交数据的应用程序时,出现错误1语法错误

.net - 我应该释放从 GCHandle::FromIntPtr 返回的句柄吗?