Есть не статический метод:
int make_dir(const std::string& name, Dir* cur_dir = _cur)
{///}
_cur - приватный член. Этот код нельзя компилируется, но поясняет мою задумку: если функция вызвана с одним аргументом, то cur_dir инициализируется _cur объекта, с которого был вызван. Можно сделать так
int make_dir(const std::string& name, Dir* cur_dir = nullptr)
{
if(cur_dir == nullptr)
cur_dir = _cur;
///
}
Но выглядит это не особо правильно, да и методов таких будет многою. Есть ли способ корректно записать по умолчанию?
Нет, нестатические поля объекта не могут выступать в качестве аргументов по умолчанию. Поэтому остается либо ваш вариант с if, либо перегрузка данного метода в двух вариантах: с одним и с двумя параметрами
int make_dir(const std::string& name, Dir* cur_dir) { ... }
int make_dir(const std::string& name) { return make_dir(name, _cur); }
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники