В
class Test {
// ...
void restart(int k)
{
Test(k);
}
};
оператор Test(k);
объявляет переменную типа Test
с именем k
.Эта переменная k
инициализируется путем вызова конструктора по умолчанию, который не существует.
Я не думаю, что мне нужен конструктор по умолчанию, поскольку все функции в этом классе нуждаются в аргументе типа int.
Это не является ни причиной, ни против class
, имеющего / нуждающегося в конструкторе по умолчанию или нет.
Если вы хотите установить значение Test::i
внутри Test::reset()
тогда просто сделай так:
class Test
{
private:
int i;
public:
Test(int m) : i{ m } // you should use initializer lists instead of
{} // assignments in the constructors body.
void restart(int k) { i = k; }
};