int method1() {
return 0;
}
decltype(method1) method2() {
return method1;
}
我编译我的代码,得到一个错误:'method2'声明为函数返回一个函数, 然后我将返回类型更改为函数指针,它可以工作,我只想知道为什么会这样。
decltype(method1) *method2() {
return method1;
}
答案 0 :(得分:7)
在C ++中,无法返回函数和数组。这就是语言的设计方式。
您必须返回指针或引用它们。你已经尝试过指针,它有效。返回引用的以下内容也应该有效:
decltype(method1)& method2() {
return method1;
}
答案 1 :(得分:1)
您希望编译器在返回"函数"时返回什么代码?您想要返回机器代码吗?
编译器无法做到这一点。此外,由于您可能不想要自我修改代码,因此您并不需要代码的副本。相反,可以返回函数的地址。