thekiller
Viceinator
Hallo,
gibt es eine Möglichkeit eine Klasseninstanz in jeder Headerdatei verfügbar zu machen ohne sie global zu deklarieren?
Ich möchte ein Modul für Netzwerkarbeit entwickeln und es als Klasse verpacken. Nunja, da ich bestimmte Methoden in verschiedenen Teilen meines Programms benötige brauch ich die Klasse am besten global.
Ich habe zwar folgende Möglichkeit entdeckt, aber diese wirft mir ein anderes Problem auf wo ich keine Lösung für finde. Und zwar, dass AfxSockInit() ja vor der ersten Deklaration von CSocket aufgerufen werden muss...
Ich hab den Code jetz nich getestet aber is auch nur damit Ihr wisst was ich meine.
Na jedenfalls MFCSocketInstance kann ich zwar global überall verwenden aber AfxSockInit(); kann ich so ja nicht vor der Deklaration von SocketInstance und ConnectionInstance aufrufen und damit wird die Klasse unbrauchbar.
Hoffe Ihr könnt mir helfen.
LG Manu
gibt es eine Möglichkeit eine Klasseninstanz in jeder Headerdatei verfügbar zu machen ohne sie global zu deklarieren?
Ich möchte ein Modul für Netzwerkarbeit entwickeln und es als Klasse verpacken. Nunja, da ich bestimmte Methoden in verschiedenen Teilen meines Programms benötige brauch ich die Klasse am besten global.
Ich habe zwar folgende Möglichkeit entdeckt, aber diese wirft mir ein anderes Problem auf wo ich keine Lösung für finde. Und zwar, dass AfxSockInit() ja vor der ersten Deklaration von CSocket aufgerufen werden muss...
C++:
// MFCSocket.h
#ifndef _MFCSOCKET_H
#define _MFCSOCKET_H
#include "afxsock.h"
class MFCSocket {
private:
UINT uiPort;
public:
CSocket SocketInstance;
CSocket ConnectionInstance;
MFCSocket();
~MFCSocket();
BOOL OpenServer(UINT _uiPort);
void Close();
};
extern MFCSocket MFCSocketInstance;
#endif
C++:
// MFCSocket.cpp
#include "stdafx.h"
#include "MFCSocket.h"
MFCSocket::MFCSocket() {
this->uiPort = 50000;
}
MFCSocket::~MFCSocket() {
this->SocketInstance.close();
this->ConnectionInstance.close();
}
BOOL MFCSocket::OpenServer(UINT _uiPort) {
this->uiPort = _uiPort;
this->SocketInstance.Create(this->uiPort);
this->SocketInstance.Bind(this->uiPort);
this->SocketInstance.Listen();
this->SocketInstance.Accept(this->ConnectionInstance);
return true;
}
void MFCSocket::Close() {
this->SocketInstance.close();
this->ConnectionInstance.close();
}
MFCSocket MFCSocketInstance;
Ich hab den Code jetz nich getestet aber is auch nur damit Ihr wisst was ich meine.
Na jedenfalls MFCSocketInstance kann ich zwar global überall verwenden aber AfxSockInit(); kann ich so ja nicht vor der Deklaration von SocketInstance und ConnectionInstance aufrufen und damit wird die Klasse unbrauchbar.
Hoffe Ihr könnt mir helfen.
LG Manu
Zuletzt bearbeitet von einem Moderator: