0
Эй, ребята у меня есть этот код:Ошибка: необходимость «имяТипа» перед итераторных
#include<iostream>
#include<string>
#include<list>
#include<vector>
template<class T>
class ListLib {
public:
ListLib(std::list<T>& listItem) {
*listT = listItem;
}
std::vector<T> convertToVector() {
std::vector<T> result;
std::list<T>::iterator itList;
for (itList = *listT->begin(); itList != *listT->end(); itList++)
result->(*itList);
std::vector<T>::iterator itVec;
for (itVec = result.begin(); itVec != result.end())
std::cout << *itVec << std::endl;
}
private:
std::list<T> *listT;
};
int main() {
std::list<std::string> sampleList;
std::vector<std::string> sampleVector;
sampleList.push_back("3");
sampleList.push_back("4");
sampleList.push_back("5");
sampleList.push_back("6");
ListLib<std::string> listLib(sampleList);
std::cout << "Hello World" << std::endl;
}
И я попытался решить многие ошибки, которые я получил с этим, но привело ни к чему хорошему я сделал функцию, которая делает то же самое вещь как libary im, делающая теперь с классом. мне нужна помощь! Вот ошибка:
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp: In member function ‘std::vector<T> ListLib<T>::convertToVector()’:
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:15:3: error: need ‘typename’ before ‘std::list<T>::iterator’ because ‘std::list<T>’ is a dependent scope
std::list<T>::iterator itList;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:15:26: error: expected ‘;’ before ‘itList’
std::list<T>::iterator itList;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:17:8: error: ‘itList’ was not declared in this scope
for (itList = *listT->begin(); itList != *listT->end(); itList++)
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:18:12: error: expected unqualified-id before ‘(’ token
result->(*itList);
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:20:3: error: need ‘typename’ before ‘std::vector<T>::iterator’ because ‘std::vector<T>’ is a dependent scope
std::vector<T>::iterator itVec;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:20:28: error: expected ‘;’ before ‘itVec’
std::vector<T>::iterator itVec;
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:21:8: error: ‘itVec’ was not declared in this scope
for (itVec = result.begin(); itVec != result.end())
^
/home/ubuntu/workspace/c++/CustomLibaries/listLib.cpp:21:53: error: expected ‘;’ before ‘)’ token
for (itVec = result.begin(); itVec != result.end())
^
Вам не хватает полуколланов по всему месту .... и когда-либо там, где говорится, что перед ним нужно 'typename' (например,' std :: vector :: iterator'), измените его на 'typename std :: vector :: итератор –
DarthRubik
Хмм @ Дартрубик! полуколенье? xD .. Anways, почему мне нужно typename? Что оно делает? –
Какая часть «need» typename 'before' std :: list :: iterator '' вы не могли понять? –