Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-10-2008, 19:09   #1
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6229
[C++] Incognita classi derivate

Ciao ragazzi,
ho un dubbio su un programma che sto sviluppando in C++. Dunque, questo programma legge degli eventi da un file di testo. Gli eventi possono essere di due tipi, supponiamo EVENTOA, EVENTO_B.

Ora, al momento c'è una classe base EVENTO, e le due derivate A e B, ognuna delle quali gestisce l'evento appropriato. il fatto è che a priori non so quale delle due classi derivare, in quanto dipende da quello che c'è scritto nel file di testo. Quindi, come posso reimpostare il codice in maniera adatta al problema?

Ovviamente vorrei evitare di derivarle entrambe, in quanto non è detto che ci siano sempre entrambi gli eventi. Siccome il file di testo è letto dalla classe base, avevo pensato di analizzare il primo evento e poi dalla classe base creare oggetti figli, e da lì far partire il tutto. Ma non credo che sia molto elegante.

Thanks
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 30-10-2008, 20:00   #2
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
Direi che non è proprio bello fare una classe base non astratta, significa che c'è bisogno di un ulteriore livello di astrazione.

Supponiamo che la prima riga della parte del testo relativa alla classe permetta di discriminare quale classe istanziare (supponiamo che ci sia scritto "EVENT_A" o "EVENT_B".

Leggi la prima riga e la passi ad un factory method...
Codice:
static Event * YourClass::MainFactoryMethod(string classType)
{
  return (classType.compare("EVENT_A") == 0) ? new EventA() : ((classType.compare("EVENT_B") == 0) ? new EventB() : new NullEvent());
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 10:51   #3
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6229
Quote:
Originariamente inviato da cionci Guarda i messaggi
Direi che non è proprio bello fare una classe base non astratta, significa che c'è bisogno di un ulteriore livello di astrazione.

Supponiamo che la prima riga della parte del testo relativa alla classe permetta di discriminare quale classe istanziare (supponiamo che ci sia scritto "EVENT_A" o "EVENT_B".

Leggi la prima riga e la passi ad un factory method...
Codice:
static Event * YourClass::MainFactoryMethod(string classType)
{
  return (classType.compare("EVENT_A") == 0) ? new EventA() : ((classType.compare("EVENT_B") == 0) ? new EventB() : new NullEvent());
}
Ottima idea, Grazie Supponiamo però che, una volta lanciata l'applicazione, voglio che faccia tutto da sola, ovvero, veda quale è la prima classe da derivare e poi continua con gli eventi, quale è il metodo migliore per fare ciò? Cioè, al momento ho messo nel main il lancio del metodo factory, con al suo interno il controllo sul primo evento.
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 11:40   #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
Spiega meglio.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 11:43   #5
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6229
Allora,
dquando gestisco i vari eventi, la prima volta che incointro quel tipo di evento, faccio l'apposita derivazione. Quindi nel main ho una cosa del genere, al momento:

Codice:
TestFactory prova(argv[1], rank, num_procs,false);
 prova.MainFactoryMethod();
 prova.start_computation();
In questo modo però, gestisco un solo evento, il primo. Io invece avrei bisogno, con una sola chiamata dal main, di gestirli tutti. Quindi il programma dovrebbe, la prima volta che incontra un evento, derivare la classe, e successivamente gestire gli altri, usando gli oggetti già utilizzati. Quindi quando incontra un evento già visto, non deriva di nuovo, ma utilizza l'oggetto vecchio.
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 31-10-2008, 11:48   #6
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
Per questo devi semplicemente fare una nuova classe che fa il parsing del file, ogni volta che incontra una nuova istanza nel file di testo chiama il factory method.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Windows 11, come abilitare il nuovo Menu...
Windows 11 cambia volto: arriva il nuovo...
Console portatile con raffreddamento a l...
iPad Pro 11'' con Chip M4 in super offer...
NVIDIA e Uber insieme per la più ...
Prezzi anomali sui prodotti FRITZ! oggi ...
Portatili Acer e ASUS con 40GB di RAM a ...
Offerte Oral-B su Amazon: sconti fino al...
Withings lancia U-Scan: analisi delle ur...
Huawei lancia i nuovi top di gamma: Pura...
Netflix affida ai creatori di Life is St...
Nuove OPPO Enco X3s con cancellazione de...
Uragano Melissa, i video dal cielo fanno...
OPPO Find X9 e X9 Pro puntano tutto su f...
The Peregreen 3: il drone più vel...
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: 12:04.


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