string wird nicht erkannt



  • Hey Leute,
    ich wollte eine kleine NetSend-Funktion schreibt die die Nachricht vom
    Buffer in den message-char übergibt und die PC-Nummer mitangibt. Nunja,
    funzt noch alles nicht so gut, mein Problem ist jetzt, dass er mir sagt
    das er den "string" nicht kennt!?

    Komplette Klasse:

    class Send
    {
          private:
                  char* buffer[599];
                  int pc_number;
    
                  public:
                         Send();
    
                         void p_Send(char* message[600],int p_pc);
    
    };
    
    Send::Send()
    {
                char* buffer[599];
                int pc_number=0;
    };
    
    void Send::p_Send(char* message[600], int p_pc)
    {
         message = buffer;
         string cmd_command = "net send " + p_pc;
         system(cmd_command.c_str());
    };
    

    Und ja, jetzt sagt er mir in der Methodendefinierung, dass er string
    nicht kennt. Aber ich muss den String doch bei seiner Deklarierung
    gleich definieren. Sprich er kann nicht leer sein, er muss ein Wert
    haben. Aber wie soll ich das anstellen?



  • Hast du

    #include<string>
    

    drinne,
    und benutzt du in irgend einer Art und Weiße den std namespace?



  • Hast Du den Header eingebunden?

    #include <string>

    Und hast Du den Namespace std bekannt gemacht? Falls nicht, schreib:

    std::string cmd_command ...



  • Ahyo, hab ich ganz vergessen *schäm*
    Danke.



  • Eine Frage hab ich noch, und zwar muss ich zwei Parameter an Net Send
    übergeben. Ich übergebe den ersten ja so:
    "net send" + pc_number;
    Aber wie übergebe ich den zweiten wohl am besten?
    Noch einen neuen String dazu packen oder die pc_number mit der message
    in einen bzffer stecken?
    "net send" + pc_number + message;
    geht ja nicht.



  • Hallo,

    das hier:

    "net send " + pc_number;
    

    tut ebenfalls schon nicht das, was du vielleicht erwartest, das ist eine nette Zeigerinkrementierung um den Wert pc_number, aber keine "Zeichenkettenaddition". Also musst du auch hier schon umwandeln. Wie man es machen kann, findest du in den FAQ hier.

    MfG,

    Probe-Nutzer



  • string cmd_command = "net send " + p_pc; 
    cmd_command = cmd_command + message;
    ...
    

    Bist Du denn sicher, daß Dein buffer so richtig deklariert ist? Du legst ein Array aus char-Zeigern an!

    Und was soll:

    message = buffer
    

    ?

    Du übergibst message doch gerade erst an Deine Methode ...?!



  • Und das Array im Konstruktor ist völliger Blödsinn! Das ist lokal und nach Beendigung des Konstruktors wieder weg. Es ist NICHT das Array, daß Du unter 'private' deklariert hast!



  • Das trifft übrigens auch für pc_number im Konstruktor zu. Wenn Du damit Deine private Variable initialisieren willst, muß es heißen:

    pc_number = 0;

    Mit

    int pc_number = 0;

    legst Du im Konstruktor eine neue lokale Variable an, die am Ende des Konstruktors zerstört wird.

    Du solltest Dir noch einmal ein paar Grundlagen anlesen!



  • Net Send ansich ist schon ziemlich schmutzig,deswegen versuche
    ich auch irgendwie drum rum zu kommen, aber dies scheint mit
    Abstand die
    "einfachste" Methode zu sein.
    Ob

    cmd_command = "net send" + pc_number;
    cmd_command = cmd_command + message;
    

    Und was soll:
    C/C++ Code:
    message = buffer
    ?

    Du übergibst message doch gerade erst an Deine Methode ...?!

    Nunja, der Textbuffer, in dem später der richtige Inhalt steht wird mit
    dem Methodenaufruf an buffer übergeben und mit dem kann ich dann
    weiterarbeiten, dass hilft mir in dem Sinne, dass ich flexibler
    damit arbeiten kann.


Anmelden zum Antworten