Приватный член в обьявлении

192
10 июля 2017, 17:59

Есть не статический метод:

 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;
  ///
 }

Но выглядит это не особо правильно, да и методов таких будет многою. Есть ли способ корректно записать по умолчанию?

Answer 1

Нет, нестатические поля объекта не могут выступать в качестве аргументов по умолчанию. Поэтому остается либо ваш вариант с if, либо перегрузка данного метода в двух вариантах: с одним и с двумя параметрами

int make_dir(const std::string& name, Dir* cur_dir) { ... }
int make_dir(const std::string& name) { return make_dir(name, _cur); }
READ ALSO
Небольшая программа на C++

Небольшая программа на C++

Давно учил С++, уже его подзабыл, но сейчас необходимо решить заданиеБуду благодарен любой помощи!

231
c++ UpdateLayeredWindow

c++ UpdateLayeredWindow

Создаю на плюсах нестандартное окно по png рисунку через UpdateLayeredWindowКак на этом окне отобразить стандартные контролы? В частности меня интересуют...

291
Fonts error в консоли веб-приложения

Fonts error в консоли веб-приложения

С чем могут быть связаны такие проблемы?

250
jQuery селектор [требует правки]

jQuery селектор [требует правки]

Ищу элемент с помощью селектора:

233