Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-08-2007, 16:40   #1
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
[c++] Suddividere due classi su piú file

Salve a tutti!

Sto facendo un po'di tentativi con c++ e ho scritto le seguenti classi:

Codice:
class cLevel
{
private:
	bool Data[5][5];             //Mappa delle collisioni
	class cPlayer                //Classe Player
	{
	private:
		int x;                   //Posizione x del giocatore
		int y;                   //Posizione y del giocatore
		cLevel *Level;           //Istanza di cLevel, dove poter accedere ai suoi metodi
	public:
		cPlayer(cLevel *_Level); //Costruttore della classe che richiede un puntatore a level
		void MoveRight(void);    //Muove il player a destra se non ci sono collisioni, usando il metodo di cLevel per intercettare collisioni
		friend class cLevel;     //Consente a cLevel di accedere alle proprietá x e y per poter disegnare il livello
	};
	cPlayer *Player;             //Istanza di cPlayer contenuta in cLevel
public:
	cLevel(void);                //Costruttore di clevel, dove viene inizializzato Data e Player
	bool Collide(int x,int y);   //Ritorna true se la posizione (x|y) sulla mappa corissponde a collisione
	void UpdatePlayer(void);     //Muove il player a destra
	void Draw(void);             //Disegna il livello e il player sullo schermo
};
Volevo chiedervi se c'é un metodo piú elegante, o piú funzionale di scrivere queste classi. E soprattutto come fare a suddividere queste classi su piú file(in caso di progetti piú grandi)
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 17:53   #2
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Codice:
class cPlayer                //Classe Player
	{
	private:
		int x;                   //Posizione x del giocatore
		int y;                   //Posizione y del giocatore
		cLevel *Level;           //Istanza di cLevel, dove poter accedere ai suoi metodi
	public:
		cPlayer(cLevel *_Level); //Costruttore della classe che richiede un puntatore a level
		void MoveRight(void);    //Muove il player a destra se non ci sono collisioni, usando il metodo di cLevel per intercettare collisioni
		friend class cLevel;     //Consente a cLevel di accedere alle proprietá x e y per poter disegnare il livello
	};

class cLevel
{
private:
	bool Data[5][5];             //Mappa delle collisioni
	
	cPlayer *Player;             //Istanza di cPlayer contenuta in cLevel
public:
	cLevel(void);                //Costruttore di clevel, dove viene inizializzato Data e Player
	bool Collide(int x,int y);   //Ritorna true se la posizione (x|y) sulla mappa corissponde a collisione
	void UpdatePlayer(void);     //Muove il player a destra
	void Draw(void);             //Disegna il livello e il player sullo schermo
};
le due classi puoi anche tenerle su file separate a patto di fare le necessarie inclusioni.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 17:55   #3
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Ma cosí non mi dá problemi a definire friend una classe non ancora definita?
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 20:18   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Perché usare friend ?!?!? Solo per poter cambiare x e y ? Non bastano due metodi per spostare x e y ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 21:12   #5
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Quote:
Originariamente inviato da stdecden Guarda i messaggi
Codice:
void MoveRight(void);    //Muove il player a destra se non ci sono  collisioni, usando il metodo di cLevel per intercettare collisioni
Sí, ma il problema é un altro. La classe, com'era riusciva a intercettare collisioni direttamente dalla classe cLevel, in pratica usare il metodo cLevel::Collide(int x,int y);
Invece se separo le due classi non riesco piú ad accedere a questo metodo

EDIT:

Grazie delle vostre risposte, comunque ho risolto con una dichiarazione anticipata!

Ultima modifica di stdecden : 03-08-2007 alle 22:16.
stdecden è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Dopo gli unicorni, arrivano i "soon...
Europei sempre più diffidenti ver...
L'acquisto di Steam Machine è un ...
Lenovo Prime Day: i 6 migliori sconti (a...
CATL non riesce a superare la fase proto...
Mythos, il caso si complica: causa contr...
Il pazzesco nuovo record di Xiaomi YU7 G...
OneXPlayer 3: un PC gaming in formato Ni...
Climate.us riporta online i 15 anni di C...
Hisense da 58 pollici sotto i 300€ fa tr...
Windows 11 26H2: cosa cambia e chi resta...
SpaceX ha lanciato la sua prima capsula ...
Il prezzo medio di vendita degli smartph...
Prime Day robot tagliaerba: MAMMOTION, D...
Recensione Google Home Speaker: Gemini s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v