【发布时间】:2013-06-20 13:49:35
【问题描述】:
考虑一下这个 C++1y 代码 (LIVE EXAMPLE):
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
编译器(GCC 4.8.1)慷慨地抛出这个错误:
main.cpp:在函数“int main()”中:
main.cpp:8:18:错误:在扣除“auto”之前使用“auto foo()”
std::cout ^
我如何在这里转发声明foo()?或者更恰当地说,是否可以转发声明foo()?
我还尝试编译代码,我尝试在 .h 文件中声明 foo(),定义 foo() 就像上面在 .cpp 文件中的那样,在我的 @987654330 中包含 .h @ 包含int main() 和对foo() 的调用的文件,并构建它们。
发生了同样的错误。
【问题讨论】:
-
你确定你真的需要那个吗?我认为创建返回如此未定义的函数的函数通常不是一个好主意,也许您需要返回一些抽象高级类的实例?如果你知道你在做什么,没有冒犯:)