【问题标题】:std::function and lambda expression from C# to C++从 C# 到 C++ 的 std::function 和 lambda 表达式
【发布时间】:2023-01-20 20:00:11
【问题描述】:

我正在将一些 C# 代码翻译成 C++。因为这是我第一次使用 C++,所以有些事情我不明白。

C#中原始代码的结构是:

public static Func<int, int, double> MyFunc(double InVar1, double InVar2)
        {
            return (FunVar1, FunVar2) =>
            {
                double Sum = FunVar1 + FunVar2:
                double Prod = Sum * InVar1 * InVar2; 

                return Prod;
            };
        }

我试图在 C++ 中复制的代码是:

std::function<double(int, int)> MyFunc(double InVar1, double InVar2)
{
    return [InVar1,InVar2](int FunVar1, int FunVar2)
    {
         double Sum = FunVar1 + FunVar2;
         double Prod = Sum * InVar1 * InVar2; 

         return Prod;
    };
}

首先,我不确定 C++ 结构是否复制了 C# 结构。 之后我在捕获列表中收到错误: C++ no suitable user-defined conversion from "type" to "[...]" exists 我还尝试放入捕获列表:

[]
[&]
[=]

但他们都没有工作。

【问题讨论】:

    标签: c# c++ lambda std std-function


    【解决方案1】:

    代码对我来说看起来不错,除了

    • 您正在捕获InVar1 两次。
    • double Sum = FunVar1 + FunVar2: 的末尾有一个冒号而不是分号。

    如果我修复这些错误,代码会为我编译。

    【讨论】:

    • 对不起,那些打错了。编辑。
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多