2017-12-19 8 views
-3

Rückkehr habe ich diesen Code:Wie `machen return` einen var und Text

#include <iostream> 
#include <string> 
using namespace std; 

class Event{ 
    public: 
     Event(int x, int y, string z){ 
      setEvent(x, y, z); 
     }//Constructor 

     void setEvent(int a, int b, string c){ 
      if(a >= 0){ 
       if(a < b){ 
        if(b <= 24){ 
         start_time = a; 
         end_time = b; 
         event_name = c; 
        } 
        else cout <<"The end time for the event needs to be <=24 hours"; 
       } 
       else cout <<"The start time for the event needs to be smaller than the end time"; 
      } 
      else cout <<"The start time for the event needs to be >=0 hours"; 
     }//Code to set an event and check if the event is valid within the precondition 

     void rename(string r){//Code to rename event 
      event_name = r; 
     } 

     string duration(){ 
      int time_length = end_time - start_time; 
      if(time_length == 1) return "1 hour";//I am stuck over here!!! 
      else return time_length "hour"; 
     } 

    private: 
     int start_time; 
     int end_time; 
     string event_name; 
}; 

Wenn Sie void duration() in der öffentlichen Klasse aussehen, versuche ich return Rückkehr Text in einem Teil und eine var zu machen und Text in einem anderen Teil. Aber ich kann es nicht funktionieren lassen.

 main.cpp:30:16: error: could not convert 'time_length' from 'int' to 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' 
else return time_length "hour"; 
      ^~~~~~~~~~~ 

main.cpp: 30: 28: Fehler: erwartet ';' vor String-Konstante sonst Rückgabe time_length "hour"; ^ ~~~~~

Gibt es eine Möglichkeit, return arbeiten oder eine Alternative zu diesem Problem/Code zu beheben.

+1

1. alle Rückkehr kann man nicht von einem ** 'void' ** Funktion etwas zu schreiben. 2. gebe zum Beispiel etwas wie ein 'std :: pair ' zurück. – user0042

+0

Anstatt es zu einem Downvote geben, geben Sie bitte auch Feedback –

+0

@ user0042 können Sie erklären, die 2. Sie gemeint haben, ist es unklar, was Sie meinen. –

Antwort

1

Die Verwendung von void bedeutet, dass die Funktion nichts zurückgibt, so dass Sie keine Variablen von dieser Funktion abrufen können.

würde ein Update sein, die Funktion Typen std::string, EG

string duration(){ 
    int time_length = end_time - start_time; 
    if(time_length == 1) return "1 hour";//I am stuck over here!!! 
    else //Formulate a string otherwise 
} 

Hinweis Sie gehen zu müssen, sehen in building a string with C++, und diese Logik in der else-Anweisung setzen zu geben.

Wenn Sie ein Paar zurückkehren, werden Sie eine andere Funktion mit Rückgabetyp std::pair<int, std::string>

Verwandte Themen