Bl4*_*C4t 4 c++ lambda header include-guards auto
我想以这样的方式定义一个自动返回类型的函数,如果包含标头,我可以从多个 .cpp 文件中调用它。我有4个文件
\nhead.hpp- 函数在哪里
#ifndef HEAD_HPP\n#define HEAD_HPP \n\nauto f();\n\n#endif\nRun Code Online (Sandbox Code Playgroud)\nhead.cpp- 函数声明的位置
#include "head.hpp"\n\nauto f(){\n return [](){\n return 10;\n };\n}\nRun Code Online (Sandbox Code Playgroud)\ntest1.cpp- 使用地点
#include "head.hpp"\nint foo(){\n auto func = f();\n return f();\n}\nRun Code Online (Sandbox Code Playgroud)\nmain.cpp- 也用在哪里
\n#include "head.hpp"\nint foo();\nint main(){\n auto fu = f();\n\n return fu() + 5 + foo();\n}\nRun Code Online (Sandbox Code Playgroud)\n所有文件都编译在一起\n我仍然收到错误:
\n\n\n错误:在扣除 \xe2\x80\x98auto\xe2\x80\x99 之前使用 \xe2\x80\x98auto f()\xe2\x80\x99
\n
\n\n自动 fu = f();
\n
不幸的是,C++ 不是这样工作的。
当您在 C++ 中调用函数时:
auto fu=f();
Run Code Online (Sandbox Code Playgroud)
编译器必须知道函数实际返回的离散类型。auto不是真实类型。它只是稍后要弄清楚的类型的占位符。
但这个“以后”永远不会到来。如果编译器看到的只是auto返回类型,则编译器无法确定函数的实际返回类型,因此程序格式不正确,并且会出现编译错误。
这是 C++ 的一个基本方面,没有解决方法。
| 归档时间: |
|
| 查看次数: |
3993 次 |
| 最近记录: |