Je suis nouveau en C++. Dans la méthode suivante, j'ai essayé d'imprimer sans retour. C'est très bien. Ce dont j'ai besoin, c'est que je dois retourner comme suit. (Besoin de lire le résultat avec cette boucle while). Je sais qu'une fois le retour nous ne pouvons pas revenir en arrière. Le problème est le résultat devrait être retourné dans toutes les itérations dès que le résultat est disponible. (similaire à un résultat de lecture de thread une fois qu'il est disponible alors que l'autre thread exécute cette boucle). Puis-je utiliser le rappel pour le résoudre?Comment revenir d'une fonction encore et encore en C++?
list<string>MyLogRetriever::handleEventsOnEventID(std::string logType, DWORD eventID)
{
while (GetAsyncKeyState(VK_ESCAPE) != true)
{
wstring wsLogType = stringToWidestring(logType);
LPCWSTR lpcwstrLogType = wsLogType.c_str();
string string_query = "";
string_query = string_query + "*[System/EventID= " + to_string(eventID) + "]";
wstring wsCons = stringToWidestring(string_query);
LPCWSTR pwsQuery = wsCons.c_str();
getEvents(lpcwstrLogType, pwsQuery, -1);
//printResultedEvent(myLogStructures, numberOfAvailableEvents);
return returnResultedEvent(myLogStructures, numberOfAvailableEvents);
numberOfAvailableEvents = 0;
}
}
Avez-vous vraiment besoin d'en retourner un à la fois, ou pouvez-vous obtenir tous les résultats et les retourner tous en même temps? La première option serait beaucoup plus facile si C++ avait des générateurs (comme 'yield' en Python et C#), ce qui ne se fait pas officiellement depuis un moment, bien que MSVC ait le support initial et que Clang travaille dessus. – chris
@chris Je dois en retourner un à la fois. Le résultat n'est pas disponible à la fois. Puis-je utiliser le rappel pour le résoudre? – Veena
Vous pourriez, si l'équilibre temps-effort-entretien est assez bon pour vous. – chris