我有一个名为 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));
错误是:
error: cannot call member function 'void MessageQueue::sendMessage(void*, const MESSAGE_ACTION&, const void*, const ___uint16&)' without object
最佳答案
sendMessage
的调用似乎是静态访问,但该方法并未声明为静态。方法应该声明为静态的,或者需要一个 MessageQueue 的实例;见here用于解释静态成员函数。
关于C++:不能调用没有对象的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23360183/