Разработка и сопровождение утилит и инструментов под BSD/UNIX: C/C++ и смежные системные технологии.
Модератор: Fastman
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
ASD
- мл. сержант
- Сообщения: 112
- Зарегистрирован: 2008-12-25 20:19:54
Непрочитанное сообщение
ASD » 2009-07-15 14:59:52
Буду краток...научите работать с вектором
Server.cpp: In member function 'void Server::EraseConnect(int)':
Server.cpp:199: error: no matching function for call to 'std::vector<void*, std::allocator<void*> >::erase(int&)'
/usr/include/c++/4.2/bits/vector.tcc:109: note: candidates are: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >) [with _Tp = void*, _Alloc = std::allocator<void*>]
/usr/include/c++/4.2/bits/vector.tcc:121: note: typename std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, __gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >) [with _Tp = void*, _Alloc = std::allocator<void*>]
*** Error code 1
server.h
Код: Выделить всё
#include <vector>
........................................................................
class Server
private:
std::vector<void*> m_ConnectObj;
........................................................................
};
server.cpp
Код: Выделить всё
void Server::EraseConnect(int i)
{
.....................................
m_ConnectObj.erase(i);
......................................
}
void Server::Work(void)
{
int m_ConnectObjItem, m_ConnectStateItem;
HTTPConnect* pconnect;
for(m_ConnectObjItem = 0; m_ConnectObjItem != GetConnectObjSize(); m_ConnectObjItem++)
{
void* pConObj = GetConnectObj(m_ConnectObjItem);
pconnect = (HTTPConnect*)pConObj;
switch(GetConnectState(pConObj))
{
case THR_START:
{
................................................................
break;
}
case THR_STOP:
{
DBG(("STOP:id=%d",pConObj));
pconnect->SetDead();
break;
}
case THR_DEAD:
{
EraseConnect(m_ConnectObjItem);
break;
}
}
................................................................
}
}
ASD
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Fastman
- ст. лейтенант
- Сообщения: 1236
- Зарегистрирован: 2006-07-07 10:20:38
- Откуда: Минск. РБ
Непрочитанное сообщение
Fastman » 2009-07-17 18:06:00
Чего учить то если документы не читаешь вообще

))
Тебе даже компилятор радостно сообщает что нету у вектора метода erase(...) который принимает в качестве параметра int
Код: Выделить всё
Server.cpp:199: error: no matching function for call to 'std::vector<void*, std::allocator<void*> >::erase(int&)'
Потому как явно черным по белому в доках написано:
Код: Выделить всё
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
P.S.
Тебе чтобы не морочить голову - смотреть на remove(...)
Ну и по STL-у почитать что нить )
Главное в жизни здоровье и любовь, остальное я все куплю.
Fastman
-
ASD
- мл. сержант
- Сообщения: 112
- Зарегистрирован: 2008-12-25 20:19:54
Непрочитанное сообщение
ASD » 2009-07-19 9:47:22
Fastman писал(а):Чего учить то если документы не читаешь вообще

))
Тебе даже компилятор радостно сообщает что нету у вектора метода erase(...) который принимает в качестве параметра int
Код: Выделить всё
Server.cpp:199: error: no matching function for call to 'std::vector<void*, std::allocator<void*> >::erase(int&)'
Потому как явно черным по белому в доках написано:
Код: Выделить всё
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
P.S.
Тебе чтобы не морочить голову - смотреть на remove(...)
Ну и по STL-у почитать что нить )
ок. спасибо

....уже почитал
ASD