Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Fehler "nicht deklarierter Bezeichner" - wieso?

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
11.04.2009, 19:42 Uhr
~abzy
Gast


Hallo,

ich bekomme ständig diesen Fehler:

"Octree.h(29) : error C2065: 'globe': nichtdeklarierter Bezeichner"

Die unteren zwei Codeausschnitte stammen von einer header Datei Octree.h und Worldmap.h - Octree.h definiert die Klasse Octree und in der Worldmap.h sind eigentlich nur structs definiert. In der Octree.h bzw. Octree Klasse will ich dann ein set von globe Structs definieren (myglobe), aber irgendwie will er da nicht --> wa mache ich da falsch? (komplett auf der Leitung bin im moment) Danke für jede Hilfe!


Octree.h:

C++:
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <set>
#include <stdlib.h>
#include <vector>
#include "Worldmap.h"

class Octree {

private:
    
    VectorN<3> corner1;//(minx,miny,minz)
    VectorN<3> corner2;//(maxx,maxy,mayz)
    VectorN<3> center; //((minx + maxx) / 2, usw ...
    Octree *children[2][2][2];
    bool hasChildren;
    std::set<globe*> myglobe; // ---> Hier soll der Fehler sein

...




Worldmap.h:

C++:
#ifndef WORLDMAP_H
#define WORLDMAP_H

#include "VectorN.h"
#include "Octree.h"
#include <vector>


struct globe{
    VectorN<3> pos;
    VectorN<3> velocity;
    VectorN<3> color;
    float r;
};

...



Bearbeitung von 0xdeadbeef:

cpp-tags eingefügt, nächstes mal selbst machen.


Dieser Post wurde am 12.04.2009 um 01:01 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.04.2009, 01:08 Uhr
0xdeadbeef
Gott
(Operator)


Worldmap.h bindet Orctree.h ein, dementsprechend sieht der Compiler den Inhalt von Orctree.h vor dem Inhalt von Worldmap.h, und insbesondere, bevor globe deklariert ist.

Sofern Orctree in Worldtree.h benutzt wird (das ist aus den Codeausschnitten nicht ersichtlich) vermute ich, dass du etwa folgendes willst:

C++:
#ifndef ORCTREE_H
#define ORCTREE_H

#include <cstdlib>
#include <ctime>
#include <iostream>
#include <set>
#include <stdlib.h>
#include <vector>

// globe forwärts-deklarieren
struct globe;

class Octree {

private:
    
    VectorN<3> corner1;//(minx,miny,minz)
    VectorN<3> corner2;//(maxx,maxy,mayz)
    VectorN<3> center; //((minx + maxx) / 2, usw ...
    Octree *children[2][2][2];
    bool hasChildren;
    std::set<globe*> myglobe;

...


Die Forwärts-Deklaration ermöglicht die Benutzung von globe in einer Art und Weise, für die das gesamte Struct-Layout nicht bekannt sein muss. Das bedeutet die Deklaration/Definition von globe* und globe&, nicht aber globe oder die Benutzung von Membervariablen (die zu diesem Zeitpunkt noch nicht bekannt sind).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: