|
|||||||
|
|
|
![]() |
|
|
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ù...
Ti accorgi che stai sbagliando tutto e che bisogna progettare a modo proprio quando per fare qualcosa di semplice cominci a romperti i maroni |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:27.











Ti accorgi che stai sbagliando tutto e che bisogna progettare a modo proprio quando per fare qualcosa di semplice cominci a romperti i maroni








