C++编译问题

C++ compilation issue

本文关键字:问题 编译 C++      更新时间:2023-10-16

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

WarningEventData *theEventData = 
     new WarningEventData::WarningEventData();

这很奇怪。new表达式应该命名一个类型,而不是构造函数。WarningEventData是否在类似名称空间内?如果是,为什么不是WarningEventData::WarningEventData* theEventData

WarningEventData *theEventData = new WarningEventData::WarningEventData();
                                   // ^^^^^^^^^^^^^ Is WarningEventData is a namespace ?

如果是这样,那么你必须像-一样实例化

WarningEventData::WarningEventData *theEventData = 
     new WarningEventData::WarningEventData();

如果根本不涉及命名空间-

WarningEventData *theEventData = new WarningEventData();

我做c++已经有一段时间了,但我相信构造函数不需要显式调用。尝试更换

WarningEventData *theEventData = new WarningEventData::WarningEventData();

带有

WarningEventData *theEventData = new WarningEventData();

看起来您可能需要像一样,将文件包含在WarningEventData声明中

#include "WarningEventData.h"