【发布时间】:2021-01-02 20:47:58
【问题描述】:
我只是在探索 lambda 表达式并尝试使用它从使用 C++ 三元运算符的函数中返回。但是下面的代码不能正常工作!
这是程序的简化版本,用于解释我的实际问题,因此请仅使用 lambda 发布答案,而不仅仅是返回 (x+y+offset)。
在成员函数'int Calculator::add(int, int)'中:12:26:错误:否 匹配三元 'operator?:' (操作数类型为 'bool'、'int' 和 'Calculator::add(int, int)::
') 16:3:警告:控制 到达非空函数的结尾[-Wreturn-type]
#include <iostream>
#include <string>
class Calculator
{
public:
bool initalized = false;
int offset = 0;
int add(int x, int y)
{
return !initalized ? -1 : [this, x, y]()
{
return ((x+y) + offset);
};
}
};
int main()
{
Calculator c;
c.initalized = true;
c.offset = 1;
printf("%d", c.add(2,10));
}
我在这里做错了什么?
【问题讨论】:
-
你必须调用lambda,-1和lambda没有通用类型
-
你能通过代码sn-p告诉我吗?
标签: c++11 lambda conditional-operator