Класс Foo
имеет только конструктор по умолчанию и конструктор копирования.Вектор размером 10, инициализированный объектом типа Foo
, как-то неверно.
#include <iostream>
#include <vector>
class Foo
{
public:
Foo() = default; // Error1
Foo(Foo& foo) { // Error2
std::cout << "copied" << std::endl;
}
};
int main( void )
{
Foo f;
std::vector<Foo> vec(10, f); // Error3
return 0;
}
В приведенном выше примере кода есть 3 ошибки:
Ошибка1: Конструктор-кандидат недопустим: требуется 0 аргументов, но предоставлено 1
Ошибка2: Конструктор-кандидат недопустим: 1-й аргумент ('const Foo') потеряет квалификатор const
Ошибка3: в экземпляре функции-члена 'std ::__1 :: vector> :: vector 'запрашивается здесь
Когда я удаляю конструктор копирования или вектор в основной функции, ошибок нет.
Вопрос:
Какая часть кода неправильная и почему?
ps
Когда определение вектора заменено на Foo ff(f)
, ошибки также исчезают.Является ли квалификатор const
запросом вектора?