Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2009, 19:02   #1
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
[C++] Si può fare?

Avrei una classe template di questo tipo:

Codice:
template <class Type> class SamplesBase;
Che è astratta. E ho due classi da questa derivate:

Codice:
template <class Type>
class DelayBuffer : class SamplesBase<Type>;

template <class Type, class SummaryType>
class SHSummaryBuffer : class SamplesBase<Type>;
Queste classi nel costruttore hanno un parametro int (con valore default) che ne dimensiona alcuni membri. A questo punto ho:

Codice:
class MiaClasse {

protected:

	unsigned char dim_;

	std::vector<SHSummaryBuffer<Tipo1, Tipo2>> history_

	std::vector<DelayBuffer<Tipo1>> cbuffer_

	//...

};
Volevo sapere come posso fare per far in modo che al momento della costruzione di MiaClasse, gli elementi di tipo DelayBuffer<Tipo1> e SHSummaryBuffer<Tipo1, Tipo2> vengano costruiti con un valore int da me specificato e non con il valore di default usato dal costruttore default.
Grazie
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:09   #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
Puoi inserire nel vettore elementi che abbiano un valore intero diverso con push_back (ad esempio):

cbuffer_.push_back(DelayBuffer<Tipo1>(intero));

Ovviamente deve essere definito il costruttore di copia nel caso di memoria dinamica.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:18   #3
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Eh... mi scocciavo
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:20   #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
Al limite c'è questa per inserire K elementi tutti uguali
http://www.cplusplus.com/reference/stl/vector/insert/
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:29   #5
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
non male
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:47   #6
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Alla distruzione di MiaClasse quei vector vengono puliti come si deve??? Non alloco niente dinamicamente, da nessuna parte...
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:48   #7
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
Sì, dovrebbero.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:50   #8
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Uhm..... non è una bella risposta
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 19:53   #9
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
Sì in questo caso sì, dipende anche un po' da come la usi...se non allochi niente dinamicamente non ci possono essere problemi.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 20:11   #10
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
E guarda un po' qui...
Codice:
std::vector<SamplesBase<Tipo1, Tipo2>> history_;
std::vector<SamplesBase<Tipo2, Tipo2>> cbuffer_;

void init() {
history_.insert(history_.begin(), N, SHSummaryBuffer<Tipo1, Tipo2>(M));
cbuffer_.insert(cbuffer_.begin(), N, DelayBuffer<Tipo2, Tipo2>(K));
}
Essendo le definizioni:

Codice:
template <class Type, class SummaryType>
class SamplesBase;

template <class Type, class SummaryType>
class DelayBuffer : class SamplesBase<Type, SummaryType>;

template <class Type, class SummaryType>
class SHSummaryBuffer : class SamplesBase<Type, SummaryType>;
Dovrebbe andare tutto OK, nell'inizializzazione. Ma se si considera che:

Codice:
virtual bool get(const SummaryType& t) const = 0;
E' una funzione di SamplesBase definita delle sottoclassi, quando faccio:

Codice:
history_[i].get(obj1);
cbuffer_[j].get(obj2);
Va tutto OK??? Cioè mi chiama nel primo caso SHSummaryBuffer::get e nel secondo DelayBuffer::get? Non posso provare perchè sto ancora in fase troppo preliminare, ma se così non si può fare poi x cambiare perdo troppo tempo...

P.S.: get() è virtual anche nelle sottoclassi.
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 20:15   #11
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
E perché non dovrebbe andare ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 23:18   #12
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Sto modificando in continuazione... non funziona niente. Accidenti ai template... sono la cosa più orripilante che esista nella programmazione!
Mi spiego:

Codice:
template <class Type>
class SamplesBase {
	protected:
		std::list<Type*> base_;

	public:
		SamplesBase(unsigned char dim = 0) {
			base_.insert(base_.begin(), dim+1, (Type*)NULL);
		}
};

template <class Type>
class DelayBuffer : public SamplesBase<Type> {
	public:
		DelayBuffer(unsigned char dim = 0) : SamplesBase(dim) {}
};
Ovviamente ho riportato solo la parte di implementazione che mi interessa. Mi sapete dire perchè:

Codice:
In constructor ‘DelayBuffer<Type>::DelayBuffer(unsigned char)’:
error: class ‘DelayBuffer<Type>’ does not have any field named ‘SamplesBase’
????
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2009, 23:27   #13
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Ok mancava <Type>... Ditemi però perchè la funzione della classe DelayBuffer:

Codice:
virtual const Type* get() const {
return base_.front();
}
Non compila così... dice che base_ non è dichiarato, ma se scrivo SamplesBase<Type>::base_ lo vede!!!
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2009, 10:14   #14
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
Ma questa get dove è dichiarata ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2009, 11:23   #15
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Da nessuna parte più... Ti accorgi che stai sbagliando tutto e che bisogna progettare a modo proprio quando per fare qualcosa di semplice cominci a romperti i maroni
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Cupra Raval sfida BMW, Volvo e le altre:...
BYD supera per la prima volta le 300.000...
Crisi RAM, spunta un prezzo incredibile ...
Ginux, un nuovo kernel compatibile con L...
Gemini Notebook si aggiorna: arrivano i ...
Svolta per l'emulazione della prima Xbox...
Narwal celebra 10 anni: l'evoluzione tec...
TIM Enterprise acquisisce il 70% di VoiS...
Altro che dicembre, la RTX 5080 da 24 GB...
Quale futuro per Mass Effect? Tutte le i...
Schermi rotti su iPhone Duo: un report s...
Lo stealer VOLTA chiede a Claude, Kimi e...
Intel e Oracle puntano sulle CPU Xeon pe...
Offerte Amazon da urlo: Mac mini M6 a 89...
Bici elettriche a prezzi da record su Am...
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: 16:09.


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