C ++ si la condición no funciona
Tengo una matriz de objetos
Passenger travellers[] = {
Passenger(nullptr, "Toronto", 2018, 4, 20),
Passenger("", "Toronto", 2018, 4, 20),
Passenger("John Smith", nullptr, 2018, 4, 20),
Passenger("John Smith", "", 2018, 4, 20),
Passenger("John Smith", "Toronto", 2018, 4, 20), // valid
Passenger("John Smith", "Toronto", 2028, 4, 20),
Passenger("John Smith", "Toronto", 2014, 4, 20),
Passenger("John Smith", "Toronto", 2020, 12, 31), // valid
Passenger("John Smith", "Toronto", 2018, 40, 20),
Passenger("John Smith", "Toronto", 2018, 0, 20),
Passenger("John Smith", "Toronto", 2017, 1, 1), // valid
Passenger("John Smith", "Toronto", 2018, 4, 0),
Passenger("John Smith", "Toronto", 2018, 4, 32),
Passenger(nullptr, nullptr, 0, 0, 0),
Passenger()
};
y mis constructores son:
Constructor predeterminad
Passenger::Passenger() {
p_name[0] = '\0';
p_dest[0] = '\0';
// destination date
d_yy = 0;
d_mm = 0;
d_dd = 0;
}
Y mi otro constructor con parámetros son:
Passenger::Passenger(const char *name, const char *destination, int year, int month, int days) {
if (name != nullptr && destination != nullptr && name[0] != '\0' && destination[0] != '\0') {
if (year >= 2017 && year <= 2020 && month >= 1 && month <= 12 && days >= 1 && days <= 31) {
strncpy(p_name, name, 32);
strncpy(p_dest, destination, 32);
d_yy = year;
d_mm = month;
d_dd = days;
}
else
Passenger();
}
else
Passenger();
}
Problema es que el resto de los objetos deben devolver "no válido" pero el primer objeto devuelve "válido" en lugar de tener un nullptr valor. Alguien sabe lo que estoy haciendo mal?