我看到一些我不理解的C ++错误(我是以java为中心的编码器):
WarningNotification_if.cpp: In function 'void fireStatusBarMessage(char*, int)':
WarningNotification_if.cpp:62:14: error: expected type-specifier
WarningNotification_if.cpp:62:14: error: cannot convert 'int*' to 'WarningEventData*' in initialization
WarningNotification_if.cpp:62:14: error: expected ',' or ';'
以下是实际代码:
void fireStatusBarMessage(char *message = 0, int aTime = 0 )
{
LmLocker locker( (char *)__FILE__, __LINE__, &WarningEventUpdateMutex );
HMI_DEBUG(EVENT_DEBUG, (stderr, "Fire Status Bar Message\n") );
if ( message != 0 )
{
QString warningMessage = QString( message );
WarningEventData *theEventData =
new WarningEventData::WarningEventData();
theEventData->initialize();
theEventData->setMessageType( SESSION_STATUSBAR_TYPE );
theEventData->setCommand( APPEND_WARNING );
theEventData->setMessage( warningMessage );
theEventData->setModifier( aTime );
theEventData->setCategory( SESSION_STATUSBAR_TYPE );
WarningNotification::fireChange( SESSION_STATUSBAR_TYPE, theEventData );
} /* endif - message contents */
}
我是否需要导入其他内容或使用某个-D标志?
答案 0 :(得分:5)
WarningEventData *theEventData = new WarningEventData::WarningEventData();
这很奇怪。 new
表达式应该命名一个类型,而不是构造函数。 WarningEventData
是否在名称相似的命名空间内?如果是这样,为什么不是WarningEventData::WarningEventData* theEventData
?
答案 1 :(得分:5)
WarningEventData *theEventData = new WarningEventData::WarningEventData();
// ^^^^^^^^^^^^^ Is WarningEventData is a namespace ?
如果是这样,那么你必须实例化 -
WarningEventData::WarningEventData *theEventData =
new WarningEventData::WarningEventData();
如果根本没有涉及命名空间 -
WarningEventData *theEventData = new WarningEventData();
答案 2 :(得分:2)
我做c ++已经有一段时间了,但我相信构造函数不期望显式调用。尝试替换
WarningEventData *theEventData = new WarningEventData::WarningEventData();
与
WarningEventData *theEventData = new WarningEventData();
答案 3 :(得分:0)
看起来您可能需要包含带有WarningEventData声明的文件,与
一样#include "WarningEventData.h"