J'écris du code et j'ai rencontré une erreur lorsque je dois retourner plusieurs valeurs à ici, j'essaie de retourner Quelqu'un pourrait-il m'aider avec mon problème de syntaxe ici? p> Main () Code> à partir d'une autre fonction.
article et
Total code> à la fonction principale ) code>. Cependant, je reçois un avertissement disant que
élément code> n'a pas été utilisé, mais je l'utilise dans
principal () code>, où il dit "Utilisation d'un identifiant non déclaré" sur avec
total code>. p>
int processSelection() {
cout << "Enter your selection: " << flush;
int item;
cin >> item;
cout << menuItems[item-1] << ": $" << cost[item-1] << " has been added to cart." << endl;
int total;
total = 0;
total = total + cost[item];
return std::make_pair(item, total);
}
int main() {
cout << "Vending Machine" << endl;
cout << "----Items------" << endl;
vendingMachine();
cout << "Enter 0 to checkout" << endl;
// int selection() = processSelection();
std::pair<int, int> p = processSelection();
float cost;
while(p.first != 0) {
processSelection();
}
cout << "Proceding to checkout..." << endl;
cout << "========================" << endl;
cout << "Amount due: " << p.second << endl;
3 Réponses :
Utilisez ci-dessous dans votre processus de processus de processus de processus https://www.geeksforgeeks.org/returning-multiple-values-de-a-function-utilisant-Tupple-and-pair-in-c/ de Mike.
std::pair<int, int> p = processSelection();
Un autre choix à gérer le retour consiste à utiliser std :: cravate code>.
Je l'ai essayé mais "std :: make_pair (article, total);" (La première ligne que vous avez suggérée) me donne cette erreur: "[CQuery] Aucune conversion viable de la valeur retournée de type 'paire
Changement de sélection de processus () à STD :: paire
Votre fonction est déclarée pour renvoyer un seul Vous devez modifier la fonction pour renvoyer un type qui peut réellement contenir plusieurs valeurs à la fois, par exemple: P> int code>, mais vous essayez ensuite de
retour code> multiple
int code>. Cela ne fonctionnera tout simplement pas.
struct ItemTotal {
int item;
int total;
};
ItemTotal processSelection() {
ItemTotal it;
...
it.item = ...;
it.total = ...;
...
return it;
}
int main() {
...
ItemTotal selection = processSelection();
// use selection.item and selection.total as needed...
...
}
Merci, j'ai essayé ceci mais je ne suis pas sûr de quoi mettre après la it.item = ...; et ça.Total = ...;;
Vous pouvez simplement déclarer "article" et "total" dans la fonction principale et transmettre leur référence à la fonction de processelection () comme:
Vérifiez cet article: geeksforgeeks.org/...
On dirait que vous voulez retourner
std :: paire code>
Marginalement liée, mais la peine de lire votre temps de lire afin que vous sachiez ce que l'opérateur de virgule fait en C ++: EN.CPPREFERFERATION.COM/W/CPP/Language/...
Utilisez des paires, des tuples, des structures ou des classes. Ou (moins recommandé) des arguments de référence non-const.
Ma suggestion utilise un
struct code> qui fournit des informations plus significatives sur les premières et secondes valeurs plutôt que simplement "première et deuxième".
Comment utiliser des paires ici?
Est-ce que cela répond à votre question? retourner plusieurs valeurs à partir d'une fonction C ++