Initialisation map static
Citation:
Envoyé par
r0d
Code:
1 2 3 4 5 6 7 8
| class Mere
{
public:
Mere() { Init(); } // constructeur qui appelle Init()
protected:
virtual void Init() = 0;
}; |
Bonjour,
Je me permets d'intervenir dans ce topic car le bout de code ci-dessus m'interpelle.
Que doit-il se passer si on souhaite accéder à des valeurs de classes avant toute instanciation?
Manifestement on est obligé de faire une initialisation dans le constructeur mais encore faut-il qu'on ai déjà appelé ce constructeur avant d'accéder aux membres statiques, qui plus est si ils sont publiques (privés/protégés c'est le même débat si on passe par des méthodes de classes).
Je rencontre moi-même un cas de ce genre, sans extension pour l'instant mais j'y viendrai et je ne comprends pas pourquoi, par exemple, on ne peut pas écrire ça dans un cpp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
std::map<std::string, bool> DataPrimitive::_SPECFIELDS_WRITERULES = {
{struct_::DataModel::FIELD_RECORD, false},
{struct_::DataModel::FIELD_VERSION, false},
{struct_::DataModel::FIELD_OBJID, false},
{struct_::DataModel::FIELD_SECOWNERID, true},
{struct_::DataModel::FIELD_CREATETIME, false},
{struct_::DataModel::FIELD_UPDATETIME, false},
{struct_::DataModel::FIELD_MAKETIME, true},
{struct_::DataModel::FIELD_REMOVETIME, true},
{struct_::DataModel::FIELD_COLLECINDEX, false}
}; |