C ++ vector :: push_back с использованием конструктора копирования по умолчанию

У меня есть класс (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 & '

Спасибо :)

10
задан Tuxer 10 June 2011 в 18:35
поделиться