Ho un problema riguardante l'inizializzazione del membro 'const const'. In una classe basata su modelli definisco un membro const e lo inizializzo al di fuori della classe.
Quando includo il file .h in cui questa classe è implementata in più file .cpp, viene visualizzato un errore LNK2005 (sto usando VS2010) che dice che la costante è già definita.Inizializzazione di membri cost const nella classe di modelli
// List.hpp
template <class T>
class List {
static const double TRIM_THRESHOLD;
};
template <class T>
const double List<T>::TRIM_THRESHOLD = 0.8;
Ho provato a mettere l'inizializzazione membro in un file cpp, ma tanto sono un errore di linker dicendo che la costante non è definita a tutti. Se la lista non è basata su modelli e inserisco l'inizializzazione in un file .cpp, va tutto bene.
C'è qualche soluzione per questa situazione? Ho già le clausole # ifdef/define attorno al file, e non è sicuramente una soluzione.
Manca il modificatore "const" nella definizione. – Ropez
Sei sicuro che questo sia il tuo codice? Non dovresti avere errori. @Ropez: il 'const' conta solo nella dichiarazione. – GManNickG
È interessante notare che VS2015 non ha questo problema. In qualche modo è possibile ottimizzare/capire che le definizioni di const statiche sono in realtà tutte la stessa cosa e non contrassegnano un errore nel linker. – Menace