Ваша функция всегда будет возвращать 0 из-за того, как она написана в данный момент.Если в первом элементе вектора найдено совпадение, результат вычитания будет равен нулю.Если она не совпадает, другая часть выполняется и возвращает 0, и функция завершается.
Функция должна выглядеть примерно так:
int findInItemvector(const vector<Item>& vec, string name)
{
for(vector<Item>::const_iterator it = vec.begin(); it < vec.end(); it++)
{
if(it->getName() == name)
{
return it - vec.begin();
}
}
return -1;
}
Обратите внимание, что я передаю вектор поконстантная ссылка вместо значения, это предотвратит создание ненужной копии вектора при вызове этой функции.Кроме того, вы должны указать сбой, используя -1, а не 0, поскольку последний является допустимым результатом, если искомая строка находится в первом элементе вектора.