Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » struct unklar

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.10.2007, 02:14 Uhr
BuddyLove



Ich habe hier in einer headerdatei eines undokumentierten Projekts das folgende struct neben ca. 60 weiteren Klassen u.ä. deklariert:



C++:
struct PROPERTYPAGE {
public:
    PROPERTYPAGE(int idd = -1,void* page = (void*)NULL,CRuntimeClass* runtimeclass = (CRuntimeClass*)NULL)
    {
        this->idd = idd;
        this->page = page;
        this->runtimeclass = runtimeclass;
        this->status = 0;
    }
    
    ~PROPERTYPAGE() {}
    
    int idd;
    void* page;
    CRuntimeClass* runtimeclass;
    int status;
};





In einer anderen headerdatei finde ich wiederum folgende Deklaration:



C++:
PROPERTYPAGE*    FindPage                    (int nID);




mit einem public- Zugriffspezifizierer decoriert.

Mir verschließt sich u.a. durch die obigen Zeilen Code der Gesamtkontext des Programms zu einem sehr großem Teil deshalb wäre ich für jede Art der Kommentierung dankbar!

MfG

Guido

Dieser Post wurde am 26.10.2007 um 13:55 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.10.2007, 07:13 Uhr
RedEagle



In C++ sind Struckturen gleich(?) Klassen. Deshalb können strukturen auch Methoden enthalten.
In diesem fall eine Constructor-Methode.
Diese Methode wird beim Erstellen der Struktur aufgerufen. Dadurch, dass die Parameter bereits initialisiert sind, können sie per argument verändert werden, müssen aber nicht.

bsp.:


C++:
struct STC
{
STC(int pa=1, int pb=2)
{
  this->a = pa;
  this->b = pb;
}
int a;
int b;
};

//

STC s1;
STC s2(1000);
STC s3(1000, 1000);



s1.a == 1
s1.b == 2

s2.a == 1000
s2.b == 2

s3.a == 1000
s3.b == 1000
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.10.2007, 13:38 Uhr
xXx
Devil



C++:
struct PROPERTYPAGE
{
    PROPERTYPAGE(int idd = -1, void* data = NULL, CRuntimeClass* runtime = NULL)
        : idd(idd), page(data), runtimeclass(runtime), status(0)
    {}

    int idd;
    void* page;
    CRuntimeClass* runtimeclass;
    int status;
};
...

C++:
struct PROPERTYPAGE
{
    /* public: \\ unnötig */
    PROPERTYPAGE(int idd = -1, void* page = /*(void*) \\ unnötig */NULL, CRuntimeClass* runtimeclass = /*(CRuntimeClass*) \\ unnötig */NULL)
    {
        /* this->idd = idd;
        /* this->page = page;
        /* this->runtimeclass = runtimeclass;
        /* this->status = 0;
        /* // Initialialisierungsliste nutzen
        */

    }

    /* ~PROPERTYPAGE() {} \\ unnötig */

    int idd;
    void* page;
    CRuntimeClass* runtimeclass;
    int status;
};
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.10.2007, 13:49 Uhr
Karldin Shinowa
Professional Noob



Zitat von RedEagle:
In C++ sind Struckturen gleich(?) Klassen.


Bis auf den Unterschied das Structs keine Vererbung unterstützen und alles public is ja.
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.10.2007, 13:54 Uhr
xXx
Devil


structs unterstützen keine vererbung? oha ^^

C++:
struct basic_vertex
{
    double x;
    double y;
};

struct texture_vertex : public basic_vertex
{
    double tv;
    double tu;
};
sure dass das nicht geht? :P
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.10.2007, 13:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von Karldin Shinowa:

Zitat:
In C++ sind Struckturen gleich(?) Klassen.


Bis auf den Unterschied das bei Structs keine Vererbung unterstützen und alles public is ja.



--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.10.2007, 14:25 Uhr
BuddyLove



guckst du hier...


http://de.wikibooks.org/wiki/C%2B%2B-Programmierung




Strukturen
Eine Struktur (struct(ure)) ist ein Datentyp, der mehrere Variablen gleichen oder verschiedenen Typs zu einem Objekt zusammenfasst. Die Deklaration erfolgt mit dem Schlüsselwort struct. Beispiel:

struct Struktur
{
int a;
bool b;
};
Das Semikolon nach der geschweiften Klammer schließt die Struktur ordnungsgemäß ab.

Nun kann der Name Struktur wie ein primitiver Typname verwendet werden, um eine Instanz zu erstellen:

Struktur s1;
Die „Einzelteile“ des Objekts heißen Datenelemente (auch die Begriffe Komponenten, Eigenschaften, Attribute oder data members sind gebräuchlich). Mit dem Operator . (Punkt) kann auf die einzelnen Daten zugegriffen werden:

s1.a = 17;
s1.b = false;
Ein solcher struct ist bei C++ jedoch auch eine Klasse und kann genauso verwendet werden und Methoden erhalten.

class Struktur2
{
public:
int a;
bool b;
};
Der einzige wirkliche Unterschied ist die Standardvorgabe, daß die enthaltenen Deklarationen bei Verwendung von Schlüsselwort struct öffentlich sind und bei class privat



Vielen Dank erstmal für die Anregungen!
Grüße vonnä Küstä

Buddy Love

Dieser Post wurde am 26.10.2007 um 14:29 Uhr von BuddyLove editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.10.2007, 14:31 Uhr
xXx
Devil


Joa und was verstehst du nicht?
aja

C++:
PROPERTYPAGE*    FindPage(int nID);
... davon mal ab das man für id's eigentlich unsignierte Werte nimmt, sollte die Funktion in einem Array von PROPERTYPAGE nach dem Element mit der idd == nID suchen und dir dann einen Zeiger darauf zurück geben ... das * steht für einen Zeiger ... und hat nichts mit der definition/deklaration von PropertyPage zu tun.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.10.2007, 16:28 Uhr
Karldin Shinowa
Professional Noob


Irren ist menschlich...
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: