考慮這個C++ 1Y代碼(LIVE EXAMPLE):如何聲明返回類型被推導出來的函數?
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
編譯器(GCC 4.8.1)慷慨地拍攝出這樣的錯誤:
main.cpp: In function ‘int main()’:
main.cpp:8:18: error: use of ‘auto foo()’ before deduction of ‘auto’
std::cout << foo();
^
我如何前瞻性聲明foo()
在這裏?或者更合適,是否可以提前申報foo()
?
我也試着編譯代碼,我試圖在.h
文件中聲明foo()
定義foo()
就像一個.cpp
文件上面的一個,包括在我main.cpp
文件中包含.h
和int main()
通話到foo()
,並構建它們。
發生同樣的錯誤。
你確定你確實需要嗎?我認爲創建返回未定義的函數通常不是一個好主意,也許你需要返回一些抽象的高級類的實例?沒有冒犯,如果你知道你在做什麼:) – SpongeBobFan