Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"függvény": az "auto vagy decltype(auto)" értéket visszaadó függvény nem használható a definiálás előtt
Megjegyzések
A auto megadott függvényhívás visszatérési típusa nem következtethető ki. A fordítónak nem volt elegendő információja a hívási helyen.
Ez a hiba akkor fordulhat elő, ha egy előre deklarált tagfüggvényt hív meg, amelynek van auto visszatérési típusa, de nincs hozzá tartozó törzs vagy késleltetett visszatérési típus. Ez a hiba akkor is jelentkezik, ha a fordító nem talál egy jelölt visszatérési típust, amikor létrehoz egy sablon specializációt. A hiba gyakori oka egy hiányzó felületi fejléc. A hiányzó típust gyakran a hibát követő megjegyzésben említett típusnév alapján lehet meghatározni. A probléma megoldásához minden használt típushoz adja meg annak a névtérnek a fejlécét, amelyben a típus szerepel.
Example
A következő C++/WinRT-példa C3779-et hoz létre:
// C3779.cpp
#include <winrt/Windows.Gaming.Input.h>
void CheckGamepads()
{
auto gamepads =
winrt::Windows::Gaming::Input::Gamepad::Gamepads();
for (auto&& gamepad : gamepads)
{
check(gamepad);
}
}
Ez a kód hibát jelez:
C3779.cpp(8): error C3779: winrt::impl::consume_Windows_Foundation_Collections_IIterable<D,winrt::Windows::Gaming::Input::Gamepad>::First': a function that returns 'auto' cannot be used before it is defined
with
[
D=winrt:::Windows:::Gaming:::Input:::Gamepad
]
note: see declaration of 'winrt::impl::consume_Windows_Foundation_Collections_IIterable<D,winrt::Windows::Gaming::Input::Gamepad>::First'
with
[
D=winrt::Windows::Gaming::Input::IVisualCollection
]
A megjegyzés azt jelzi, hogy a visszatérési típus definíciója a függvénytől Windows::Foundation::Collections::IIterablefügg. A probléma megoldásához adja meg a névtér fejlécét:
// C3779b.cpp
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Gaming.Input.h>
void CheckGamepads()
{
auto gamepads =
winrt::Windows::Gaming::Input::Gamepad::Gamepads();
for (auto&& gamepad : gamepads)
{
check(gamepad);
}
}
Lásd még
API-k használata C++/WinRT használatával
Miért jelenik meg a C++/WinRT projektemben olyan hiba, hogy "consume_Something: az 'auto' értéket visszaadó függvény nem használható, mielőtt definiálva van"?