У меня есть фрагмент кода, который мне нужно протестировать, состоящий из двух частей: сначала состояние нужно установить ровно один раз, затем мне нужно проверить функцию.
Мой код выглядит так:
static void BM_LoopTime(benchmark::State& state)
{
MasterEngine engine;
for (auto _ : state)
{
engine.LoopOnce();
}
}
BENCHMARK(BM_LoopTime);
В моем выводе я получаю:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Pointer already set
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Несколько раз, что является настраиваемым сообщением об ошибке, которое указывает на очень важный указатель, к которому следует касаться только один раз, пытается быть перезаписан.
Вызов этого кода несколько раз является неопределенным поведением в моей реализации. Как я могу вызвать инициализацию объекта ровно один раз, а затем сказать ему вызвать l oop?