Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » struct - Deklaration

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
28.08.2007, 21:45 Uhr
Suba Esel



Kann man irgendwie ein struct (oder class) deklarieren? Also sowas in die Richtung "struct Schiff;"?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.08.2007, 21:46 Uhr
Pablo
Supertux
(Operator)


was meinst du? Du *musst* immer deine Strukst und Klassen deklarieren, sonst weiß der Compiler gar nicht, womit er zu tun hat. Oder was meinst du?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 28.08.2007 um 21:47 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.08.2007, 22:15 Uhr
xXx
Devil


Hmm ... meinst forward declaration?

C++:
class foo; // forward declaration

class bar
{
private:
    foo* m_pFoo;
};

class foo
{
private:
    bar* m_pBar;
};
Wenn de aber keine Pointer nutzen würdest, würde das nicht gehen ... der Compiler wäre ja sonnst in ner Schleife, da er, um die eine Klasse umzusetzten, ja den Inhalt der anderen braucht. Für diese braucht er aber wieder die der anderen ... ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.08.2007, 22:49 Uhr
Suba Esel



ok.... ich hab sowas:


C++:
namespace Spieler
{
    struct Schiff
    {
        Schiff();
        std::string bild, schuss;
        int height, width, x, y, hp, move_x, move_y;
    };
    std::vector<Schuss> schuesse;
    double schuss_warten = 0.3;
    double schuss_zeit = 0;
    void Move_Schuesse();
}



ich hab dann Spieler::Schiff::Schiff noch unten definiert, aber es ging mir darum ob ich sozusagen


C++:
struct Schiff;

.
.
.

struct Schiff
{
    Schuss(int, int, int, int, int, int, int, std::string);
    int x, y, height, width, schaden, x_speed, y_speed;
    bool alive;
    std::string bild;
};



schreiben kann, mein Compiler sagt dann immer alles mögliche (inzwischen noch mehr als heut Nachmittag , darunter

main.cpp:30: error: storage size of `schiff' isn't known
main.cpp:30: error: aggregate `Spieler::Schiff schiff' has incomplete type and cannot be defined

in Zeile 30 wird ne Variable vom Typ Schiff erstellt

Kann das Ganze daran liegen, dass das in nem Namespace ist?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.08.2007, 09:02 Uhr
0xdeadbeef
Gott
(Operator)


Das geht schon, aber mit dem unvollständigen Typen hast du erstmal nur einen Namen. Du kannst damit dann Zeiger und Referenzen anlegen, aber keine flachen Objekte - dafür muss der Compiler nämlich wissen, wie groß das Ding nachher eigentlich werden soll. Beispiel:

C++:
struct A;

struct B {
  A *a; // völlig in Ordnung
  A &b; // völlig in Ordnung, die Referenz muss im Konstruktor initialisiert werden
  A c; // Compilerfehler
};


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.08.2007, 09:29 Uhr
Suba Esel



Ah so, ok. Das mit der Größe hab ich durch den ersten Fehler gemerkt, mich interessierte nur obs noch ne andre Möglichkeit gibt.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: