Variablen anderer Klassen werte zuweisen



  • Klasse1:

    void CClientDlg::OnOK() 
    {
    
        Chat chat;
        UpdateData(TRUE);
    
    //WSA initialisieren
        WSADATA wsa;
        if(WSAStartup(MAKEWORD(1,1),&wsa))
        {
            MessageBox("WSAStartup() fehlerhaft","ERROR");
        }
    
    //Strucktur für adressinformationen
        conserv.sin_addr.s_addr=inet_addr(m_strIp);
        conserv.sin_port=htons(m_iPort);
        conserv.sin_family=AF_INET;
    
    //Socket initialisieren
        if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
            MessageBox("Couldn't create socket","ERROR");
            return ;
        }
    
    //verbindung herstellen
        if((c=connect(sock,(sockaddr*)&conserv,sizeof(conserv)))==-1)
        {
            MessageBox("Couldn't connect to server","ERROR");
        }
        send(sock,m_strName,strlen(m_strName),0);
    
        chat.sock=sock; //Wert an andere Klasse übergeben
    
    //Chatfenster aufrufen
    
        chat.DoModal();
        EndDialog(0);
        //CDialog::OnOK();
    }
    

    Klasse2:

    BOOL Chat::OnInitDialog() 
    {
        CDialog::OnInitDialog();
    
        CString buffer;
        CClientDlg clientdlg;
    
        if((bytes=recv(sock,usernr,sizeof(usernr)-1,0))==-1)
        {
            MessageBox("Error, konnte nicht empfangen","ERROR");
            buffer.Format("0");
        }else
            buffer.Format("%i",usernr);
    
        m_strUser=buffer;
        UpdateData(FALSE);
    
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
    }
    

    Ich kann der Klasse2: keinen wert übergeben, wenn ich den recv() befehl mit in die erste klasse schreibe, klappt alles.



  • Du müsstest auf das Socket eine Referenz anlegen, sonst kennt er die Verbindung
    in der 2. Klasse nicht...

    Devil



  • Äh..ja... und das heißt?

    😕


Anmelden zum Antworten