J'ai un code similaire à ceci:
class AClass {
public:
struct AStruct { };
AClass(){}
private:
const AStruct m_struct;
};
int main() {
AClass a;
}
Il met cette erreur de compilation (avec Clang LLVM version 5.1):
error: constructor for 'AClass' must explicitly initialize
the const member 'm_struct'
Si je spécifie une C++11 constructeur par défaut pour struct AStruct
, j'obtiens le même message d'erreur:
struct AStruct {
AStruct() = default;
};
Cependant, ce problème est résolu par l'écriture d'un constructeur dont le corps est vide:
struct AStruct {
AStruct(){} // fixed
};
Pourquoi ai-je besoin de spécifier un constructeur vide? N'est-il pas créé automatiquement avec un accès public pour les structures?
Pourquoi ne pas le C++11 constructeur par défaut de résoudre le problème?