我想以一种这样的方式定义一个自动返回类型的函数:如果包含标头,则可以从多个.cpp文件中调用它。我有4个档案
head.hpp
-功能在哪里
#ifndef HEAD_HPP
#define HEAD_HPP
auto f();
#endif
head.cpp
-声明函数的位置
#include "head.hpp"
auto f(){
return [](){
return 10;
};
}
test1.cpp
-使用位置
#include "head.hpp"
int foo(){
auto func = f();
return f();
}
main.cpp
-也要在哪里使用
#include "head.hpp"
int foo();
int main(){
auto fu = f();
return fu() + 5 + foo();
}
所有文件都一起编译,但仍然出现错误:
错误:在扣除“ auto”之前使用“ auto f()”
auto fu = f();
不幸的是,C ++无法以这种方式工作。
在C ++中调用函数时:
auto fu=f();
编译器必须知道函数实际返回的离散类型。auto
不是真正的类型。它只是一种占位符,可以在以后弄清楚一种类型。
但是这种“后来的”永远不会出现。如果编译器看到的只是auto
返回类型,则编译器无法确定函数的实际返回类型,因此程序格式错误,并且会出现编译错误。
这是C ++的基本方面,没有解决方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句