Я написал следующую шаблонную функцию для суммирования содержимого объекта std :: vector.Он находится в отдельном файле с именем sum.cpp.
#include <vector>
template<typename T>
T sum(const std::vector<T>* objs) {
T total;
std::vector<T>::size_type i;
for(i = 0; i < objs->size(); i++) {
total += (*objs)[i];
}
return total;
}
Когда я пытаюсь скомпилировать эту функцию, G ++ выдает следующую ошибку:
sum.cpp: In function ‘T sum(const std::vector<T, std::allocator<_Tp1> >*)’:
sum.cpp:6: error: expected ‘;’ before ‘i’
sum.cpp:7: error: ‘i’ was not declared in this scope
Насколько я могусообщить, что эта ошибка возвращается, потому что std::vector<T>::size_type
не может быть разрешен для типа.Единственный вариант здесь - вернуться к std::size_t
(который, если я правильно понимаю, равен часто , но не всегда такой же, как std::vector<T>::size_type
), или есть обходной путь?