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:
Glenn Maynard
2006-01-04 23:04:07 +00:00
parent b734b602d2
commit 16b998705f
+4 -14
View File
@@ -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];
}
};