Ответ 1
Правильный ответ:
Sleep(0);
Один мой друг прислал мне этот фрагмент кода, чтобы отпраздновать его новое рождение ребенка:
void new_baby_name() { father_surname++; }
Отрывок с его точки зрения, он отец, а новый ребенок получает от него фамилию.
Я ответил:
class father_name {};
class mother_name {};
class new_baby_name: public father_name, public mother_name {};
Но я не полностью удовлетворен своим ответом...
Правильный ответ:
Sleep(0);
class baby
{
public:
vector<gene> genes;
baby(baby* logical_father, baby* biological_mother, baby* other)
{
int i;
if (other == null)
{
for (i = 0; i < logical_father->genes.size())
{
if (rand() > 0.5)
{
genes.push_back(logical_father->genes[i]);
}
else
{
genes.push_back(biological_mother->genes[i]);
}
}
}
else
{
for (i = 0; i < other->genes.size())
{
if (rand() > 0.5)
{
genes.push_back(other->genes[i]);
}
else
{
genes.push_back(biological_mother->genes[i]);
}
}
}
}
}
Существуют, конечно, другие методы для создания ребенка.
destroy Sanity();
Может не запускаться, может стекать переполнение. Я плохо себя понимаю.
Просто небольшое исправление, чтобы избежать плохих имен:
class male {};
class female {};
class father_name {};
class mother_name {};
template <class gender>
class new_baby_name;
template <>
class new_baby_name<male>: public father_name {};
template <>
class new_baby_name<female>: public mother_name {};
Обратите внимание, что у вас есть серьезная проблема, если это должно привести к ошибке компилятора; -)