Я думаю, проблема в следующем коде -
radioButton1.Checked = bool.TryParse(temp[0], out tempBool);
radioButton2.Checked = bool.TryParse(temp[1], out tempBool);
bool.TryParse
всегда будет возвращать true, если он сможет успешно разобрать первый параметр в значение bool. Что вам нужно сделать.
bool tempBool_1 = false, tempBool_2 = false;
if(bool.TryParse(temp[0], out tempBool_1))
{
radioButton1.Checked = tempBool_1;
}
else
{
// handle parsing error.
}
if(bool.TryParse(temp[0], out tempBool_2))
{
radioButton2.Checked = bool.TryParse(temp[1], out tempBool_2);
}
else
{
// handle parsing error.
}
Прежде всего, просмотрите документацию по ключевому слову explicit
.
Указывает, что конструктор или функция преобразования (начиная с C ++ 11) явные, то есть ее нельзя использовать для неявных преобразований и инициализации копирования.
blockquote>По сути, явный конструктор копирования означает, что конструктор копирования не будет вызываться неявно.
Вам не нужно определять ваш конструктор копирования / перемещения, компилятор сгенерирует их для вас. То же самое для копирования / перемещения. Просто удалите их, и все будет в порядке.
class foo { public: foo() = default; explicit foo(int val): _a(val) {} int a() const { return _a; } void a(int val) { _a = val; } private: int _a{0}; };