0
votes

Comment retourner plusieurs valeurs dans une fonction C ++?

J'écris du code et j'ai rencontré une erreur lorsque je dois retourner plusieurs valeurs à Main () Code> à partir d'une autre fonction.

ici, j'essaie de retourner 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>

Quelqu'un pourrait-il m'aider avec mon problème de syntaxe ici? 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;


7 commentaires

Vérifiez cet article: geeksforgeeks.org/...


On dirait que vous voulez retourner std :: paire


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 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 ++


3 Réponses :


3
votes

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();


3 commentaires

Un autre choix à gérer le retour consiste à utiliser std :: cravate .


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 :: __ Type, Typename __decay_and_strip :: :: __ 'paire ') pour fonctionner le type de retour 'int' "


Changement de sélection de processus () à STD :: paire Sélection de processus ()



0
votes

Votre fonction est déclarée pour renvoyer un seul int code>, mais vous essayez ensuite de retour code> multiple int code>. Cela ne fonctionnera tout simplement pas.

Vous devez modifier la fonction pour renvoyer un type qui peut réellement contenir plusieurs valeurs à la fois, par exemple: P>

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...
    ...
}


1 commentaires

Merci, j'ai essayé ceci mais je ne suis pas sûr de quoi mettre après la it.item = ...; et ça.Total = ...;;



0
votes

Vous pouvez simplement déclarer "article" et "total" dans la fonction principale et transmettre leur référence à la fonction de processelection () comme: xxx


0 commentaires