У меня есть класс (Uniform), в котором есть конструктор с двумя параметрами и конструктор копирования по умолчанию (он содержит только int, float, std :: vector и а std :: map). Я создал
std::vector<Uniform> uniforms
, который хочу заполнить строкой
uniforms.push_back()
. Я использую этот код для этого (вторая строка предназначена только для проверки конструктора копирования, так как он в настоящее время не работает)
Uniform uni(uniform_name,type);
Uniform uni2=uni;
uniforms.push_back(uni2);
Конструктор по умолчанию работает нормально, uni2 = uni компилируется без проблем (поэтому конструктор копирования по умолчанию ОК тоже), но push_back возвращает (используя g ++ в качестве компилятора):
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.0 /../../../../ include / c ++ / 4.6.0 / ext / new_allocator.h: 108: 9: erreur: нет соответствующей функции для вызова 'Uniform :: Uniform (const Uniform &)'
/ usr / lib / gcc / x86_64-unknown- linux-gnu / 4.6.0 /../../../../ include / c ++ / 4.6.0 / ext / new_allocator.h: 108: 9: примечание: кандидатами являются:
./ inc / uniform.h: 16: 5: примечание: Uniform :: Uniform (std :: string, Uniform_Type)
./ inc / uniform.h: 16: 5: note: кандидат ожидает 2 аргумента, 1 предоставлен
. /inc/uniform.h:14:7: примечание: Uniform :: Uniform (Uniform &)
./ inc / uniform.h: 14: 7: примечание: нет известного преобразования для аргумента 1 из 'const Uniform' в ' Uniform & '
Спасибо :)