2016-12-07 3 views
0

Ich bin mir nicht sicher, warum mein Programm nicht ausgeführt werden kann. Es sagt, dass User :: receiveMessage und User :: sendMessage einen Wert zurückgeben müssen. Ich entschuldige mich, ich bin ziemlich neu im Programmieren.C4716 Fehler - Muss einen Wert zurückgeben

#include <iostream> 
#include <string.h> 
#include <cstring> 

using namespace std; 
class User { 
public: 
    char username[16]; 
    char userMotto[64]; 

public: 
    User(char name[16], char motto[64]) { 
    strcpy(username, name); 
    strcpy(userMotto, motto); 
    } 

    int sendMessage(const char *messageString, User &otherUser) { 
    cout << "\n" << username << " is sending this message: " << messageString; 
    otherUser.receiveMessage(messageString); 
    } 

    int receiveMessage(const char *messageString) { 
    cout << endl << username << " received this message: " << messageString; 
    } 
}; 

int main() { 
    User sender("Bill", "I message, therefore I am"); 
    char message[64]; 
    cout << "Enter your Message to Send: "; 
    cin >> message; 
    User receiver("Ted", "I message, therefore I am"); 
    sender.sendMessage(message, receiver); 
    return 0; 
} 
+0

Fehlermeldung ist ziemlich selbsterklärend. Ihre Funktionen 'sendMessage' und' receiveMessage' haben den Rückgabetyp "int", aber Sie geben nichts von ihnen zurück. Fügen Sie ihnen 'return (0)' hinzu oder ändern Sie die Funktionssignatur. – Ari0nhh

+0

Was meinst du mit add return (0) zu ihnen? Also sollte ich Return 0 hinzufügen; bis zum Ende der Benutzermethode? – archeryninja

+0

'return (0);' ist falsch. Es ist 'return 0;'. –

Antwort

2

ich bestanden Code durch Klirren-Format und an online Clang compiler und diese sind die Fehlermeldungen:

prog.cc:20:3: warning: control reaches end of non-void function [-Wreturn-type] 
    } 
^

prog.cc:24:3: warning: control reaches end of non-void function [-Wreturn-type] 
    } 
^

prog.cc:28:15: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] 
    User sender("Bill", "I message, therefore I am"); 
      ^

prog.cc:28:23: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] 
    User sender("Bill", "I message, therefore I am"); 
        ^

prog.cc:32:17: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] 
    User receiver("Ted", "I message, therefore I am"); 
       ^

prog.cc:32:24: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings] 
    User receiver("Ted", "I message, therefore I am"); 
        ^

die ersten beiden Warnungen zu beheben, werden Sie diese Funktionen ändern müssen:

int receiveMessage(const char *messageString) { 
    cout << endl << username << " received this message: " << messageString; 
    } 

Muss receiveMessage eine int zurückgeben? Wenn nicht, ändern Sie es in einen void Rückgabetyp:

void receiveMessage(... 

Wenn es ein int muss zurückkehren, eine return Erklärung am Ende hinzufügen:

int receiveMessage(const char *messageString) { 
    ... 
    return 0; 
    } 

Für die anderen Warnungen Sie die ersetzen könnten char[] mit std::string überall, aber sie sind nicht so schlecht.

Verwandte Themen