C ++:无法在没有对象的情况下调用成员函数

时间:2014-04-29 09:04:09

标签: c++ templates static

我有一个类nammed MessageQueue,有两个方法(一个模板,一个普通),具有不同的签名,但具有相同的名称。所有方法都是静态

在我的班级MessageQueue(MessageQueue.h)中:

template <class T> void MessageQueue::sendMessage(const ___handle queue,
                                              const MESSAGE_ACTION &action,
                                              const T *pMessage)
{
    sendMessage(queue, action, (void*)pMessage, sizeof(pMessage));
}

在MessageQueue.cpp中:

void MessageQueue::sendMessage(const ___handle queue, const MESSAGE_ACTION &action,
                           const void *pMessage, const ___uint16 &size)
{
  // ...
}

我在这一行有一个编译错误:

sendMessage(queue, action, (void*)pMessage, sizeof(pMessage));

错误是:

  

错误:无法调用成员函数'void MessageQueue :: sendMessage(void *,const MESSAGE_ACTION&amp;,const void *,const ___ uint16&amp;)'没有对象

1 个答案:

答案 0 :(得分:0)

sendMessage的调用似乎是静态访问,但该方法不是静态的。要么将方法声明为静态,要么需要“MessageQueue”的实例;有关静态成员函数的说明,请参阅here