|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
[C++]classe chiama classe
ciao a tutti,
non sapevo come chiamare il tread...spero che non sia completamente sbagliato. Avevo per voi una domanda che mi blocca in uno stupido progetto ![]() io ho: file ALFA.h Codice:
#include "BETA.h" #include "mioogg.h" class beta; class alfa{ public: mioogg* a; alfa(){ a = new mioogg(); b = new beta(this); } } Codice:
#include "ALFA.h" #include "mioogg.h" class alfa; class beta{ public: mioogg* d; beta(alfa* f){ d=f->a } }
__________________
xoooxoooxooox |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4741
|
mioogg.h viene incluso due volte, quel codice ti darà errore in compilazione - è meglio in questi casi usare le include guard
![]()
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
Quote:
![]() un secondo e posto il problema
__________________
xoooxoooxooox |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
file game.h
Codice:
#ifndef _GAME_H_ #define _GAME_H_ #include <irrlicht.h> #include "menu.h" class menu; using namespace irr; using namespace core; using namespace video; using namespace scene; using namespace gui; //non uccidetemi x qst cosa const int MEN=0; const int GIOC=1; class Game { public: //stato del gioco int stato; menu* M; Game(){ device = createDevice(EDT_SOFTWARE,dimension2d<s32>(640,480), 32, false, false, false, 0); stato = MEN; }; void run(){ while(device->run()){ switch (stato) { case MEN: M = new menu(this); stato=M->run(); delete M; break; } } device->drop(); }; IrrlichtDevice *device; }; #endif Codice:
#ifndef __MENO_H_INCLUDED__ #define __MENO_H_INCLUDED__ #include <irrlicht.h> #include "Game.h" using namespace irr; using namespace core; using namespace scene; using namespace video; using namespace io; using namespace gui; class Game; class menu { public: menu(Game* gam){ gioco=gam; device = gioco->device; }; int run(){ return 0; }; private: IrrlichtDevice *device; Game* gioco; }; #endif primo errore: forward declaration of 'struct Game' secondo errore: invalid use of incomplete type 'struct Game' spero di essere stato sufficientemente chiaro da poter essere soccorso
__________________
xoooxoooxooox |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Intanto parti dividendo la dichiarazione delle classi dalle implementazioni.
Ricordati che la forward declaration serve solo in uno dei due file. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
ok grazie...ci provo
__________________
xoooxoooxooox |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Perché rendi pubbliche variabili interne alle classi che ne descrivono lo stato? Generalmente è preferibile farle private ed accedervi tramite getter.
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
Quote:
cosa sono i getter? PS:funziona ma non ho capito come ho fatto....ho smanettato/smadonnato un po sul codice e sui settaggi del progetto e allla fine funziona!
__________________
xoooxoooxooox Ultima modifica di wizard_at : 21-10-2008 alle 14:47. |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Codice:
class pippo { int pippo; public: pippo(); int getPippo(); void setPippo(int pippo); }; Riguardo al codice, come ti dicevo, basta usare la forward declaration solo un volta e separare la dichiarazione dell'implementazione dalla classe: ClassA.h Codice:
#ifndef CLASSA_H_INCLUDED #define CLASSA_H_INCLUDED class ClassB; class ClassA { ClassB *pippo; public: ClassA(ClassB *pippo); }; #endif // CLASSA_H_INCLUDED Codice:
#include "ClassA.h" #include "ClassB.h" ClassA::ClassA(ClassB *pippo) { this->pippo = pippo; pippo->setPluto(this); } Codice:
#ifndef CLASSB_H_INCLUDED #define CLASSB_H_INCLUDED #include "ClassA.h" class ClassB { ClassA *pluto; public: ClassB(); void setPluto(ClassA *pluto); }; #endif // CLASSB_H_INCLUDED Codice:
#include "ClassB.h" #include "ClassA.h" ClassB::ClassB() { } void ClassB::setPluto(ClassA *pluto) { this->pluto = pluto; } |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jul 2006
Città: MILANO
Messaggi: 1645
|
Quote:
__________________
xoooxoooxooox |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:31.