开发者

C++ compilation issue

开发者 https://www.devze.com 2023-03-20 20:42 出处:网络
I am seeing some C++ errors I don\'t understand(I am java centric coder): WarningNotification_if.cpp: In function \'void fireStatusBarMessage(char*, int)\':

I am seeing some C++ errors I don't understand (I am java centric coder):

WarningNotification_if.cpp: In function 'void fireStatusBarMessage(char*, int)':
WarningNotification_if.cpp:62:14: error: expected type-specifier
W开发者_如何学PythonarningNotification_if.cpp:62:14: error: cannot convert 'int*' to 'WarningEventData*' in initialization
WarningNotification_if.cpp:62:14: error: expected ',' or ';'

Here is the actual code:

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 */
}

Do I need to be importing something else or using a certain -D flag?


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

This is quite odd. A new expression is supposed to name a type, not a constructor. Is WarningEventData inside a like-named namespace? And if so, why isn't it WarningEventData::WarningEventData* theEventData ?


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

If so, then you have to instantiate like -

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

If there is no namespace involved at all -

WarningEventData *theEventData = new WarningEventData();


Been a while since I did c++, but I believe the constructor does not expect an explicit call. Try replacing

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

with

WarningEventData *theEventData = new WarningEventData();


It looks like you might need to include the file with the declaration of WarningEventData, as with

#include "WarningEventData.h"
0

精彩评论

暂无评论...
验证码 换一张
取 消