Страница 1 из 1

vector - erase!!!

Добавлено: 2009-07-15 14:59:52
ASD
Буду краток...научите работать с вектором
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;
				}

		}
................................................................
	}
}


Re: vector - erase!!!

Добавлено: 2009-07-17 18:06:00
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-у почитать что нить )

Re: vector - erase!!!

Добавлено: 2009-07-19 9:47:22
ASD
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-у почитать что нить )
ок. спасибо :-D ....уже почитал