Информация об изменениях

Сообщение RAII && try/finalize от 13.02.2016 19:50

Изменено 14.02.2016 12:13 Кодт

Добрый вечер.

Есть некий класс:

class TSomeObject {
private:
int * data = nullptr;
public:
.......
void play(int* external_data) {
data = external_data;
....
some_action();
....
data = nullptr;
}
void some_action() {
....
throw std::exception("very bad code");
}
}

Какой-то внешний код вызывает метод play, передавая указатель на внешние данные. чтобы не передавать по всем методам класса эти данные, приняли решение их сохранить на уровне класса.
Хотелось бы чтобы после завершения метода play data был равен nullptr. Понимаю что можно сделать try {... data = nullptr; } catch (...){data = nullptr; throw; }, но мне кажется это не очень правильный патерн в рамках идеологии RAII. Хотелось бы понять какие патерны вы используете в такой ситуации. Заранее ответивщим спасибо.
RAII && try/finalize
Добрый вечер.

Есть некий класс:
class TSomeObject {
private:
  int * data = nullptr;
public:
  .......
  void play(int* external_data) {
     data = external_data;
     ....
     some_action();
     ....
     data = nullptr;
  }
  void some_action() {
     ....
     throw std::exception("very bad code");
  }  
}

Какой-то внешний код вызывает метод play, передавая указатель на внешние данные. чтобы не передавать по всем методам класса эти данные, приняли решение их сохранить на уровне класса.
Хотелось бы чтобы после завершения метода play data был равен nullptr. Понимаю что можно сделать try {... data = nullptr; } catch (...){data = nullptr; throw; }, но мне кажется это не очень правильный патерн в рамках идеологии RAII. Хотелось бы понять какие патерны вы используете в такой ситуации. Заранее ответивщим спасибо.