Как уже упоминалось, нет способа создать две функции с одинаковым именем, вы можете использовать что-то вроде:
Cell makeCell(Cell parent, int dim, int iterations);
для обоих случаев и передайте некоторое «специальное значение», чтобы различать два случая. Например:
cell = makeCell(par,-1,-1);
Другой вариант, который я вижу, это использовать переменное количество аргументов:
Cell makeCell(Cell parent, ...);
но тогда у вас есть проблема определения количества переданных аргументов, и если вы не можете сделать это, глядя на «родителя», вы в основном возвращаетесь к предыдущему случаю, так как вам нужно использовать «специальное значение» указать количество параметров.
Если это своего рода конструктор (как следует из названия), я бы предпочел две функции:
Cell makeCell(Cell parent);
Cell setCell(Cell cell, int dim, int iterations);
один, который создает новую пустую ячейку, и другой, который устанавливает то, что должно быть установлено. Конечно, это зависит от природы "Cell", если это жизнеспособный вариант для вас.