Приветствую.
Имеется класс вида
class CQueue
{
private:
struct cmd_t {
int8_t pri;
std::string id, msg;
void (CQueue::*handle)(const std::string & id, const std::string & msg);
};
....
public:
void handle_...(const std::string & id, const std::string & msg);
void handle_push(const std::string & id, const std::string & msg);
int Put(const std::string & id, const std::string & msg, void (CQueue::*handle)(const std::string & id, const std::string & msg), const int8_t pri = 0);
void Handler(void);
из метода не этого класса добавляю в эту очередь и GCC не возмущается как
pQ->Put(id, std::string(msg, msgLen), &CQueue::handle_push);
а как теперь обратиться к этому методу внутри этого же класса??? думал должно быть что то вроде
void CQueue::Handler(void)
{
.....
cmd_t cmd;
while (Get(cmd))
if (cmd.handle)
(cmd.*handle)(cmd.id, cmd.msg);
но компилятор против, говорит нет никакого handle
так тоже пробовал и тут типы не совпадают
(cmd.*cmd.handle)(cmd.id, cmd.msg)
или вообще все это не правильно и надо городить на std::function ???