Con los constructortes como los tienes le estas indicando al compilador que cada vez que crees un objeto le vas a pasar el nombre como parametro:
Ahora bien, por lo visto esta no es tu intencion, deberias tratar de que tus clases queden mas o menos asi:
Código:
class Personas
{
public:
Personas();
virtual ~Personas();
string nombre;
};
class Mujer:public Personas
{
public:
Mujer();
};
class Hombres:public Personas
{
public:
Hombres();
};
Personas::Personas()
{
nombre="";
//Esto o cualquier otro codigo que quieras
}
Mujer::Mujer():Personas()
{
// codigo de inicializacion de la clase Mujer
}
Hombres::Hombres():Personas()
{
// codigo de inicializacion de la clase hombre
}
Asi ya no te dara el error que mencionas, si no tienes codigo de inicializacion para ninguna de las clases no te hace falta el constructor, si quieres un metodo para asignar los nombres sin acceder directamente al mienbro nombre declara este como privado y crea un metodo que lo haga. si no entendiste esto ultimo no te preocupes mucho, trata con lo primero que mencione y luego avanzas un poco mas.
Saludos