Tengo un miembro de clase A en mi propia clase cuyo constructor toma múltiples parámetros. Estoy reenviando los parámetros de mi propia clase al constructor de la clase A. Pero es importante que estos parámetros sean correctos, así que necesito verificarlos antes de crear el miembro de A. Y aquí está el problema: Podría omitir el miembro en el lista de intialización de miembros, llamando efectivamente al constructor predeterminado. Después de los controles en el constructor, podría llamar al constructor de A en una asignación. Aunque, esto produce un error ya que el destructor de A es privado.Ejecutar comprobaciones antes de la lista de inicialización
¿Cómo resuelvo esto?
MyClass::MyClass(int someParam) : otherMember(2){
//checks for someParam
member = A(someParam); // <- produces error
}
Hable con el autor de la clase 'A' y oblíguela a hacer que el propio constructor de' A' se comporte de forma sensata en caso de valores de parámetros ilegales. –
¿Sería aceptable construir 'A' y luego verificar el hecho? – Cameron
En realidad, intenté persuadir a Sun para que lo aceptara en Java, pero se negaron. Es un poco más fácil hacer trampas en Java porque puedes llamar a un constructor desde otro. – Neil