2016-04-15 10 views
-2

Ich habe ein Problem bei der Übergabe eines Struct als Argument für eine Funktion. Ich habe die Struktur wie folgt definiert:Struct als Argument in eine Funktion

struct message{ 
    static unsigned int last_id; 
    unsigned int id; 
    std::string msg; 
    std::string timestamp; 
    message(void) 
    { 
    } 
    message(const std::string& recvbuf_msg,const std::string& a_timestamp) : 
    msg(recvbuf_msg), timestamp(a_timestamp), id(++last_id) 
    { 
    } 
}; 

und die fuction Definition wie folgt:

void print_msg(message *myMsg,std::string recv_usrn){ 
    cout << "#" << myMsg->id << " @" << recv_usrn << ": " << myMsg->msg << " at " << myMsg->timestamp << endl; 
} 

Im Haupt ich diese verwendet haben, die Funktion wie:

message myMsg; 
string recv_usrn; 
print_msg(&myMsg,recv_usrn); 

Und das Problem ist, dass es diese Fehler gibt:

C2065: 'message': nicht deklarierter Bezeichner

C2065: 'myMsg': nicht deklarierter Bezeichner

C2182: 'print_msg': illegale Nutzung des Typs 'ungültig'

+3

Haben Sie vergessen, die Erklärung o einschließen f "Nachricht"? Poste bitte [MCVE]. –

+0

Als ich 'message myMsg' schrieb, wollte ich nur klarstellen, dass 'myMsg' eine Art Nachricht war. Es wurde zuvor in den Code eingegeben. – 19mike95

+0

Um die Nachrichtenstruktur zu verwenden, müssen Sie sie zuerst definieren. Ist es vor der Definition (Implementierung) der Funktion 'print_msg' definiert? Ist die Struktur definiert, bevor Sie die Variable 'myMsg' vor dem Aufruf von' print_msg' definieren? –

Antwort

3

für mich arbeitet, setzen Sie alles, was in derselben Datei .. Dies funktioniert gut

#include <iostream> 
#include <cstdio> 
using namespace std; 
struct message{ 
    static unsigned int last_id; 
    unsigned int id; 
    std::string msg; 
    std::string timestamp; 
    message(void) 
    { 
    } 
    message(const std::string& recvbuf_msg,const std::string& a_timestamp) : 
    msg(recvbuf_msg), timestamp(a_timestamp), id(++last_id) 
    { 
    } 
}; 

void print_msg(message *myMsg,std::string recv_usrn){ 
    cout << "#" << myMsg->id << " @" << recv_usrn << ": " << myMsg->msg << " at " << myMsg->timestamp << endl; 
} 

int main() 
{ 
message myMsg; 
string recv_usrn; 
print_msg(&myMsg,recv_usrn); 
} 
Verwandte Themen