Можно ли вызвать функцию только один раз?
Предположим, у меня есть класс
struct A {
void MainRoutine(Params) {
// Want to call other routine only once
}
void OtherRoutine(Params) {
// Do something that should be done only once and
// what depends on the params
}
};
Я хочу вызвать OtherRoutine
только один раз в MainRoutine
(я предполагаю, что MainRoutine
будет вызываться N
раз. Я не могу вызвать OtherRoutine
из конструктора, потому что он принимает Params
который может быть недоступен во время создания объекта.
В основном я хочу сделать что-то вроде
static bool called = false;
if (!called) {
OtherRoutine(Params);
called = true;
}
но я надеюсь, что есть более "красивый" способ сделать это ... (который можно записать в одну строку)
Может быть, что-то, используя boost::function
или какую-то часть boost
, о которой я не знаю? :)
Спасибо