【发布时间】:2014-06-15 03:02:21
【问题描述】:
我有一个名为 MessageQueue 的类,有 2 个方法(一个模板,一个普通),签名不同,但名称相同。所有的方法都是静态的。
在我的班级 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&, const void*, const ___uint16&)'
【问题讨论】:
-
那条线在哪里?很可能您必须指定范围。 MessageQueue::sendMessage(...)
-
sizeof(pMessage)将始终为 4 或 8,具体取决于您的系统。你确定这就是你想要的吗? -
@tgmath:
static写在类定义中的成员函数旁边,而不是函数定义中。但我敢打赌,有一个static不见了。 -
我发现了我的错误:我没有用这样的静态类型定义方法 sendMessage:static void sendMessage(const ___handle queue, const MESSAGE_ACTION &action, const void *pMessage , const ___uint16 &size);
-
哦,我明白了,这是 MessageQueue.h 中的行。