|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
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; Codice:
template <class Type> class DelayBuffer : class SamplesBase<Type>; template <class Type, class SummaryType> class SHSummaryBuffer : class SamplesBase<Type>; Codice:
class MiaClasse { protected: unsigned char dim_; std::vector<SHSummaryBuffer<Tipo1, Tipo2>> history_ std::vector<DelayBuffer<Tipo1>> cbuffer_ //... }; Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
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. |
![]() |
![]() |
![]() |
#3 |
Registered User
Iscritto dal: May 2009
Messaggi: 300
|
Eh... mi scocciavo
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
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/ |
![]() |
![]() |
![]() |
#5 |
Registered User
Iscritto dal: May 2009
Messaggi: 300
|
non male
![]() |
![]() |
![]() |
![]() |
#6 |
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...
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì, dovrebbero.
|
![]() |
![]() |
![]() |
#8 |
Registered User
Iscritto dal: May 2009
Messaggi: 300
|
Uhm..... non è una bella risposta
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
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.
|
![]() |
![]() |
![]() |
#10 |
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)); } 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>; Codice:
virtual bool get(const SummaryType& t) const = 0; Codice:
history_[i].get(obj1); cbuffer_[j].get(obj2); P.S.: get() è virtual anche nelle sottoclassi. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E perché non dovrebbe andare ?
|
![]() |
![]() |
![]() |
#12 |
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) {} }; Codice:
In constructor ‘DelayBuffer<Type>::DelayBuffer(unsigned char)’: error: class ‘DelayBuffer<Type>’ does not have any field named ‘SamplesBase’ |
![]() |
![]() |
![]() |
#13 |
Registered User
Iscritto dal: May 2009
Messaggi: 300
|
Ok mancava <Type>...
![]() ![]() ![]() Codice:
virtual const Type* get() const { return base_.front(); } |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma questa get dove è dichiarata ?
|
![]() |
![]() |
![]() |
#15 |
Registered User
Iscritto dal: May 2009
Messaggi: 300
|
Da nessuna parte più...
![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:40.