Компиляция этого сегмента кода с использованием функции push_back для векторов заканчивается ошибкой.Ошибка push_back при компиляции
for (int i=0; i<=n; i++)
{
if(i==0)
{
Profit[i].push_back(0);
Weight[i].push_back(0);
Name[i].push_back("");
}
else
{
Profit[i].push_back(tosteal[i-1].getProfit());
Weight[i].push_back(tosteal[i-1].getWeight());
Name[i].push_back(tosteal[i-1].getName());
}
}
Вес и прибыль объявляются векторами типа данных int, а Name - вектором строкового типа данных. tosteal - массив объектов. getProfit() и getWeight() возвращают int и getName() возвращает строку.
Эти ошибки компилятор дает, некоторые повторы:
joulethiefdynamicrefined.cpp: 167: ошибка: запрос члена 'push_back' в «Profit.std :: вектор < _Tp, _Alloc> :: оператор [] [с _Tp = int, _Alloc = std :: allocator] (((long unsigned int) i)) ', который относится к неклассическому типу' int ' joulethiefdynamicrefined.cpp: 168: error: request for member' push_back 'в' Weight.std :: vector < _Tp, _Alloc> :: operator [] [с _Tp = int, _Alloc = std :: allocator] (((long unsigned int) i)) ', который не имеет значения, class type 'int' joulethiefdynamicrefined.cpp: 169: ошибка: неверное преобразование из 'const char *' в 'char' joulethiefdynamicrefined.cpp: 169: error: инициализировать аргумент 1 из 'void std :: basic_string < _CharT, _Traits, _Alloc> :: push_back (_CharT) [с _CharT = char, _Traits = std :: char_traits, _Alloc = std :: allocator] ' joulethiefdynamicrefined.cpp: 173: error: запрос для члена' push_back 'в' Profit.std :: vector < _Tp, _Alloc> :: operator [] [с _Tp = int, _Alloc = std :: allocator] (((long unsigned int) i)) ', который относится к неклассическому типу' int ' joulethiefdynamicrefined.cpp: 174: ошибка: запрос для члена' push_back 'в' Weight.std :: vector < _Tp, _Alloc>: : operator [] [with _Tp = int, _Alloc = std :: allocator] (((long unsigned int) i)) ', который относится к неклассическому типу' int ' joulethiefdynamicrefined.cpp: 175: error: no matching функция для вызова 'std :: basic_string, std :: allocator> :: push_back (std :: st кольцо) ' /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_string.h:914: примечание : кандидаты: аннулируются станд :: basic_string < _CharT, _Traits, _Alloc> :: push_back (_CharT) [с _CharT = голец, _Traits = станд :: char_traits, _Alloc = станд :: распределитель]
Не то, что вы просите, но диапазон 'i' в' for (int i = 0; i <= n; i ++) 'не кажется правильным. –
_Weight и Profit объявлены векторами типа данных int _... ok, так зачем вам нужно «Вес [i] .push_back'? – smac89