I'm having a problem with using templates, and since I'm completely at a loss as to what's wrong, I'm simply going to dump the (I think) relevant sections of code here.
Here is the problem code:
The bolded line is the one throwing the error.
Code:
#include <vector>
#include <algorithm>
using namespace std;
template<class client_type> class ServiceList {
public:
/* blah blah blah... */
// move a client off the to-serve list
void signOut(client_type & targ) { signOut(&targ); };
void signOut(client_type * const targ) {
// find the given client pointer in our list
vector<client_type *>::iterator where =
find(client_list.begin(),client_list.end(), targ);
// if it's in there, delete it!
if (where != client_list.end())
client_list.erase(where);
};
/* more blah... */
protected:
// the list of pointers to clients
vector<client_type *> client_list;
};
Here is the compiler error:
Code:
In file included from KeyDispatcher.hpp:7,
from ProtPlay.hpp:4,
from Follower.hpp:4,
from Follower.cpp:1:
ServiceList.hpp: In member function `void ServiceList<client_type>::signOut(client_type*)':
ServiceList.hpp:26: error: expected `;' before "where"
ServiceList.hpp:30: error: `where' undeclared (first use this function)
ServiceList.hpp:30: error: (Each undeclared identifier is reported only once for each function it appears in.)
The bolded line refers to the bolded bit in the code segment I posted.
By the way, I'm using Dev-C++ 4.9.9.2.
As I said, I don't know what's wrong at all. Help me, please?
And if you have some clever suggestions about the implementation in general, feel free to state them. This class is a template class to use in creating a message-dispatching class. Specifically, I'm currently using it to dispatch keyboard messages to a bunch of character queues. The class keeps a vector of pointers to the client character queues, and the child class of ServiceList will specify a function to actually dispatch the messages by iterating through the vector. I decided on a vector because I don't care (at least, not now) about signin/signout speeds, just the time it takes to dispatch a message.
So, yeah. You.Help(Me); ?