Rozważmy C++ 1r kod (LIVE EXAMPLE):Jak zadeklarować funkcję, której typ powrotu został wyprowadzony?
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
kompilator (GCC 4.8.1) hojnie trafia się taki błąd:
main.cpp: In function ‘int main()’:
main.cpp:8:18: error: use of ‘auto foo()’ before deduction of ‘auto’
std::cout << foo();
^
Jak przekazać zadeklarować foo()
tutaj? A może bardziej stosownie, czy można przekazać dalej - deklarować foo()
?
Próbowałem zostały również kod gdzie próbowałem zadeklarować foo()
w pliku .h
kompilacji zdefiniowane foo()
podobnie jak ten powyżej w pliku .cpp
, obejmowały .h
w moim pliku main.cpp
zawierający int main()
i połączenia do foo()
i je zbudował.
Wystąpił ten sam błąd.
Czy jesteś pewien, że naprawdę tego potrzebujesz? Nie wydaje mi się, że generalnie dobrze jest tworzyć funkcje, które zwracają coś tak nieokreślonego, może powinieneś zwrócić instancję jakiejś abstrakcyjnej klasy wysokiego poziomu? Bez obrazy, jeśli wiesz co robisz :) – SpongeBobFan