Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

VC++ globale Variablen / Resourcen

Matthias_Data / 7 Antworten / Flachansicht Nickles

Hallo!
Ich hab grad vor mit mehreren Personen ein VC++ Projekt zu machen. Dabei sind und 2 Probleme aufgefallen, die wir nicht lösen konnten:
1. wir brauchen in dem MFC-Projekt Variablen, auf die auch Instanzen unserer Klassen zugreifen können - wie machen?
2. Kann man irgendwie auch Resourcen speziell erstellte dialogfelder exportieren, denn jeder arbeitet an verschiedenen und die müssen ja zusammengefügt werden.
Ich würd mich über ne Antwort freuen!

bei Antwort benachrichtigen
Dreamforger Matthias_Data „VC++ globale Variablen / Resourcen“
Optionen

Mir stößt das Prinzip der globalen Variablen recht sauer auf. Natürlich ist es bequem, aber nicht sonderlich sauber.

Schöner wäre es doch eine abstrakte Datenzugriffsklasse zu haben mit den implementierungen Netzwerkzugriff und Plattenzugriff.
Entweder übergibst du jetzt jedem Modul eine Referenz auf Datenzugriffsklassse oder du machst weiter mit OOP, was wohl bequemer (und sicherer, besonders beim wechsel der Datenquelle) ist.
Mit einer ModulBasisklasse die einen statischen Pointer auf Datenzugriffsklasse brauchst du nur diesen einen Pointer auf dem neuesten Stand zu halten.Alle Erben der Modulbasisklasse haben damit auch gleich einen aktuellen Pointer auf den Datenzugriff


Vieleicht wirds mit einem Beispiel klarer



class DatenZugriff
{
public:
DatenZugriff(); // Konstruktor
virtual DatenZugriff(); // Destruktor (tilde geht leider bei grad nicht)
DatenTyp1 LeseDatenTyp1() = 0; // abstrakte / pure Methode
}

class Netzwerklesen : public DatenZugriff
{
public:
....// Konstruktor, Destruktor
DatenTyp1 LeseDatenTyp1(); // implementierung in der zugehörigen .cpp datei
}

class FestplatteLesen : public DatenZugriff
{
public:
...// Konstruktor, Destruktor
DatenTyp1 LaseDatenTyp1(); // implementierung, bloß diesmal für Festplatten
}


class MutterAllerModule
{
public:
...// Konstruktor , Destruktor
void NeuerZugriff( DatenZugriff *zugriff); // stellt neuen Zugriff ein, evtl wird hier auch gleich der alte zugriff delete 'd
protected:
static DatenZugriff *zugriff;
}


Alle kinder von "MutterAllerModule" können jetzt jederzeit (solange "zugriff" nicht NULL ist jedenfalls) immer zugriff->LeseDatenTyp1() benützen und müssen sich nicht drum scheren woher die Daten genau kommen. Sie sollten jedoch eine gewisse toleranz gegenüber Langsamen Netzwerkverbindungen usw. mitbringen, aber das ist ein ganz anderes (längeres) Kapitel

Viel Spass

bei Antwort benachrichtigen