我在考虑这样的事情:
auto c = []() -> (int*) {int * b; b = new int(); b[0]=2; return b;};
很抱歉,如果cuestion非常愚蠢,但我不确定为什么会产生编译错误:
main.cpp:3:18: error: expected type-specifier before '(' token auto c = []() -> (int*) {int * b; b = new int(); b[0]=2; return b;};
答案 0 :(得分:5)
删除int*
周围的括号。你没有声明像(int*) p
这样的变量,那么为什么要在括号中输入括号?
这正确编译:
auto c = []()->int* {int * b; b = new int(); b[0]=2; return b;};
答案 1 :(得分:4)
这完全有效(返回类型周围没有()
):
#include <iostream>
int main()
{
auto c = []() -> int* { int *b = new int(); b[0] = 2; return b; };
std::cout << *c() << std::endl;
}
(没想到delete
)