Как избежать повторения себя на структуру со значениями по умолчаниюC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как избежать повторения себя на структуру со значениями по умолчанию

Сообщение Anonymous »

Код: Выделить всё

#include 
#include 
#include 

struct Foo
{
std::string bar = "standard";
int x = 1;
int y = 1;

bool operator==(const Foo&) const = default;
bool operator!=(const Foo&) const = default;

void ResetToStandard()
{
bar = "standard";
x = 1;
y = 1;
}
};

int main(int argc, char* argv[])
{
Foo f, g;
g.bar = "Hello world!";
g.x = 123;
g.y = 234;
g.ResetToStandard();
assert(f == g);
}
В этом примере кода (очень упрощенный код реального мира) у меня есть struct foo , чьи поля имеют значения по умолчанию. Существует также функция Resettostandard , которая устанавливает все поле на их стандартное значение, но все значения повторяются в этой функции.
Тогда я придумал это, что работает нормально.
void ResetToStandard()
{
*this = Foo();
}
< /code>
Это общий шаблон? Это идиоматический способ?

Подробнее здесь: https://stackoverflow.com/questions/796 ... ult-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»