Betrachten Sie diese C++ 1J Code (LIVE EXAMPLE):Wie deklariere ich eine Funktion, deren Rückgabetyp abgeleitet wird?
#include <iostream>
auto foo();
int main() {
std::cout << foo(); // ERROR!
}
auto foo() {
return 1234;
}
Der Compiler (GCC 4.8.1) großzügig diesen Fehler schießt aus:
main.cpp: In function ‘int main()’:
main.cpp:8:18: error: use of ‘auto foo()’ before deduction of ‘auto’
std::cout << foo();
^
Wie leite ich deklarations foo()
hier? Oder vielleicht passender, ist es möglich, foo()
vorwärts zu deklarieren?
Ich habe auch versucht, Code kompiliert, wo ich versuchte foo()
in der .h
Datei zu deklarieren, definierten foo()
genau wie die oben in einer .cpp
Datei auf, die die .h
in meiner main.cpp
Datei int main()
und den Anruf enthält, zu foo()
, und baute sie.
Derselbe Fehler ist aufgetreten.
Sind Sie sicher, dass Sie das wirklich brauchen? Ich denke nicht, dass es generell eine gute Idee ist, Funktionen zu erstellen, die etwas so undefinierbares zurückgeben, vielleicht müssen Sie eine Instanz einer abstrakten High-Level-Klasse zurückgeben? Nichts für ungut wenn du weißt was du machst :) – SpongeBobFan