That won't work. Preferences register themselves on creation, so
PrefsMan can iterate over them (to load and save), so preferences must be created on startup, not first use.
This commit is contained in:
@@ -89,26 +89,20 @@ template <class T>
|
||||
class Preference1D
|
||||
{
|
||||
typedef Preference<T> PreferenceT;
|
||||
typedef void (*pfn_t)(size_t, CString&, T&);
|
||||
vector<PreferenceT*> m_v;
|
||||
bool m_bInited;
|
||||
pfn_t m_pFn;
|
||||
size_t m_iNum;
|
||||
|
||||
void Init()
|
||||
public:
|
||||
Preference1D( void pfn(size_t i, CString &sNameOut, T &defaultValueOut ), size_t N )
|
||||
{
|
||||
for( size_t i=0; i<m_iNum; ++i )
|
||||
for( size_t i=0; i<N; ++i )
|
||||
{
|
||||
CString sName;
|
||||
T defaultValue;
|
||||
m_pFn( i, sName, defaultValue );
|
||||
pfn( i, sName, defaultValue );
|
||||
m_v.push_back( new Preference<T>(sName, defaultValue) );
|
||||
}
|
||||
m_bInited = true;
|
||||
}
|
||||
|
||||
public:
|
||||
Preference1D( pfn_t pfn, size_t N) : m_bInited( false ), m_pFn( pfn ), m_iNum( N ) { }
|
||||
~Preference1D()
|
||||
{
|
||||
for( size_t i=0; i<m_v.size(); ++i )
|
||||
@@ -116,14 +110,10 @@ public:
|
||||
}
|
||||
const Preference<T>& operator[]( size_t i ) const
|
||||
{
|
||||
if( !m_bInited )
|
||||
Init();
|
||||
return *m_v[i];
|
||||
}
|
||||
Preference<T>& operator[]( size_t i )
|
||||
{
|
||||
if( !m_bInited )
|
||||
Init();
|
||||
return *m_v[i];
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user