C ++编译问题

时间:2011-07-15 19:54:10

标签: c++

我看到一些我不理解的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标志?

4 个答案:

答案 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"