如何将 header 文件中自动 return 类型的函数包含到多个 cpp 文件中
How to include functions with auto return type from header file into multiple cpp files
我想定义一个自动 return 类型的函数,如果我包含 header,我可以从多个 .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();
}
所有文件一起编译
我仍然收到错误:
error: use of ‘auto f()’ before deduction of ‘auto’
auto fu = f();
不幸的是,C++ 不能这样工作。
在 C++ 中调用函数时:
auto fu=f();
编译器必须知道函数实际 return 的离散类型。 auto
不是真实类型。它只是一个类型的占位符,稍后再弄清楚。
但是这个"later"永远不会出现。如果编译器看到的只是 auto
return 类型,编译器无法确定函数的实际 return 类型,因此,程序格式错误,你得到一个编译错误。
这是 C++ 的基本方面,没有解决方法。
我想定义一个自动 return 类型的函数,如果我包含 header,我可以从多个 .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();
}
所有文件一起编译 我仍然收到错误:
error: use of ‘auto f()’ before deduction of ‘auto’
auto fu = f();
不幸的是,C++ 不能这样工作。
在 C++ 中调用函数时:
auto fu=f();
编译器必须知道函数实际 return 的离散类型。 auto
不是真实类型。它只是一个类型的占位符,稍后再弄清楚。
但是这个"later"永远不会出现。如果编译器看到的只是 auto
return 类型,编译器无法确定函数的实际 return 类型,因此,程序格式错误,你得到一个编译错误。
这是 C++ 的基本方面,没有解决方法。