Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ist bin Anfänger und bin auf folgendes Problem gestoßen. Ich möchte

eine eigene Klasse schreiben für die Nutzung von Socket.Da ich mich auf der Arbeit befinde und meinen Quelltext nicht dabei habe rekonstruiere ich die Zeilen mal.

#include "winsock2.h"

#include "stdio.h"

...

...

class test

{

private:

long rc;

SOCKET s;

public :

void testfunktion();

}

void testfunktion()

{

rc=999;

s=Beispielwertwert;

}

....

jetzt mein Problem :

ich kann "normale" oder besser Standartvariablen wie z.B. long, char,int in der Klassen deklarieren und in den Funktionen nutzen. ABER !!!

Ich kann keine Variable vom Typ SOCKET deklarieren und dann in den Funktionen weiternutzen.

Ich kann höchsten die Variable direkt in den Funktionen deklarieren und nutzen. Da ich aber einige dieser Variablen funktionsübergreifend nutzen möchte und muß und ich nicht mit Rückgabewerten für die Variablen arbeiten möchte stehen ich vor dem Problem wie ich eine Variable vernünftig deklarieren kann. Im Konstruktor funktioniert es auch nicht.

Sehr wahrscheinlich ein verständnissproblem von mir.

Gruß Joerg :eat:

Geschrieben
Ich kann keine Variable vom Typ SOCKET deklarieren und dann in den Funktionen weiternutzen.
Was heißt "du kannst nicht"? Bekommst du eine Fehlermeldung? Falls ja, welche?

Im Konstruktor funktioniert es auch nicht.
Siehe Signatur.
Geschrieben
Was heißt "du kannst nicht"? Bekommst du eine Fehlermeldung? Falls ja, welche?

Siehe Signatur.

Ja eine Fehlermeldung des Compilers genauer gesagt drei pro deklarationsversuch.

1.) error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 's'

2.) error C2501: 'SOCKET' : Fehlende Speicherklasse oder Typbezeichner

3.) error C2501: 's' : Fehlende Speicherklasse oder Typbezeichner

Hier der Originalcode der Headerdatei :

............

#if !defined(AFX_MYSOCKET_H__C7082FA5_CE95_4353_892E_EB38F294C1F1__INCLUDED_)

#define AFX_MYSOCKET_H__C7082FA5_CE95_4353_892E_EB38F294C1F1__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

class mySocket

{

public:

char buf[256];

void Programmablauf();

long rc;

SOCKET s;

SOCKADDR_IN addr;

mySocket();

virtual ~mySocket();

protected:

void Daten_austauschen();

void Socket_verbinden();

void Socket_erstellen();

int startWinsock();

};

#endif // !defined(AFX_MYSOCKET_H__C7082FA5_CE95_4353_892E_EB38F294C1F1__INCLUDED_)

.........

Jetzt ist mir folgendes aufgefallen im Header selbst ist kein

#include <winsock2.h>

angegeben. Füge ich die Zeile mit dem Include oben ein verschwinden die Fehlermeldung. Kann mir da jemand fürs verständniss weiterhelfen ?!? Ich denke die includeangaben gehören in die *.cpp datei. :(

Geschrieben
Kann mir da jemand fürs verständniss weiterhelfen ?!? Ich denke die includeangaben gehören in die *.cpp datei. :(
Nein, so pauschal kann man das nicht sagen.

Man muss sich klarmachen, dass include-Direktiven nichts weiter bewirken, als vom Präprozessor durch den Inhalt der angegebenen Datei ersetzt zu werden.

Du kommst also ohne die include-Direktive in der Headerdatei aus, wenn du in jeder .cpp-Datei, die diese Headerdatei benutzt, vor die include-Direktive der Headerdatei die für winsock2.h setzt. Entscheidend ist nur, dass hinterher, wenn alle include-Direktiven ausgewertet sind, der Inhalt von winsock2.h vor dem Inhalt deiner Headerdatei in der .cpp-Datei landet.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...