2

プログラムに通知クラスがあり、このプロジェクトの他のクラスで使用しています。Visual Studio 2010 で実行すると問題ありません。しかし、Cygwin ビルドを使用すると、このエラー「エラー: 'not' トークンの前に非修飾 ID が必要です」というエラーが発生します。このクラス ファイル .h

#ifndef __TOAST_H__
#define __TOAST_H__

#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC_EXT;
USING_NS_CC;

#define LOADING 1

class notificationTOAST: public CCLayer{
public:
    notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target);
    notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target,char* imgLoading);
    notificationTOAST(char* bg, char* txt, float duringTime, CCObject* target);
    notificationTOAST(char* bg, char* txt, float x, float y, float duringTime, CCObject* target);
    notificationTOAST(char* bg, char* txt,float x, float y, float duringTime, CCObject* target,char* imgLoading);
    void end();
    virtual void loop(float id);
private:
    float duringTime;
    CCObject* target;
};

#endif

ファイル .cpp

#include "Toast.h"
#include "Constant.h"

notificationTOAST::notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);

text->setPosition(ccp(SCREEN_W/2, y));
addChild(text,1);
CCScale9Sprite* background = CCScale9Sprite::create(bg);
background->setContentSize(CCSizeMake(text->getContentSize().width + 40, text->getContentSize().height +20));
background->setPosition(ccp(SCREEN_W/2, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
    schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.3f));
this->autorelease();
}
notificationTOAST::notificationTOAST(char* bg, char* txt, float x, float y, float duringTime, CCObject* target){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);

text->setPosition(ccp(x, y));
addChild(text,1);
CCScale9Sprite* background = CCScale9Sprite::create(bg);
background->setContentSize(CCSizeMake(text->getContentSize().width + 40, text->getContentSize().height +20));
background->setPosition(ccp(x, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
    schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.3f));
this->autorelease();
}
notificationTOAST::notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target,char* imgLoading){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
CCSprite* loading = CCSprite::create("progress.png");
int w = text->getContentSize().width + loading->getContentSize().width + 5;
int h = loading->getContentSize().height;

loading->setPosition(ccp(SCREEN_W/2 - w/2 + loading->getContentSize().width/2,y));
CCActionInterval* rotage = CCRotateBy::create(2.0f, 360);
loading->runAction(CCRepeatForever::create(rotage));
addChild(loading,1,LOADING);
text->setPosition(ccp(SCREEN_W/2 - w/2 + loading->getContentSize().width + text->getContentSize().width/2 + 5, y));
addChild(text,1);

CCScale9Sprite* background = CCScale9Sprite::create("bgloading.png");
background->setContentSize(CCSizeMake(w + 10, h));
background->setPosition(ccp(SCREEN_W/2, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
    schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.1f));
this->autorelease();

}
notificationTOAST::notificationTOAST(char* bg, char* txt,float x, float y, float duringTime, CCObject* target,char* imgLoading){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
CCSprite* loading = CCSprite::create("progress.png");
int w = text->getContentSize().width + loading->getContentSize().width + 5;
int h = loading->getContentSize().height;

loading->setPosition(ccp(SCREEN_W*2/3 - w/2 + loading->getContentSize().width/2,y));
CCActionInterval* rotage = CCRotateBy::create(2.0f, 360);
loading->runAction(CCRepeatForever::create(rotage));
addChild(loading,1,LOADING);
text->setPosition(ccp(SCREEN_W*2/3 - w/2 + loading->getContentSize().width + text->getContentSize().width/2 + 5, y));
addChild(text,1);

CCScale9Sprite* background = CCScale9Sprite::create("bgloading.png");
background->setContentSize(CCSizeMake(w + 10, h));
background->setPosition(ccp(SCREEN_W*2/3, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
    schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.1f));
this->autorelease();

}

notificationTOAST::notificationTOAST(char* bg, char* txt, float duringTime, CCObject* target){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);

CCScale9Sprite* background = CCScale9Sprite::create(bg);
background->setPosition(ccp(SCREEN_W/2,SCREEN_H- background->getContentSize().height/2));
addChild(background);

int w = background->getContentSize().width;
int h = background->getContentSize().height;

text->setPosition(ccp(SCREEN_W + text->getContentSize().width/2, SCREEN_H-h/2));
addChild(text,1);
CCFiniteTimeAction* seq = CCSequence::create(CCMoveBy::create(20,CCPointMake(-(SCREEN_W + text->getContentSize().width + 50),0)), 
                                     CCMoveTo::create(0,CCPointMake(SCREEN_W + text->getContentSize().width/2, SCREEN_H-h/2)),
                                     NULL);
text->runAction(CCRepeatForever::create((CCActionInterval*)seq));




this->duringTime = duringTime;
if(duringTime > 0){
    schedule(schedule_selector(notificationTOAST::loop));
}

this->autorelease();

}

void notificationTOAST::loop(float id){

if(duringTime == -1) return;
duringTime -= id;
if(duringTime <= 0){
    duringTime = 10;

    //this->stopAllActions();
    CCLayer* aLayer = (CCLayer*) target;
    aLayer->removeChild(this);
}

}

void notificationTOAST::end(){
CCLayer* aLayer = (CCLayer*) target;
aLayer->removeChild(this);
}

私は他の関数でそれを呼び出します:

notificationTOAST *not = new notificationTOAST("","Loading...",SCREEN_W/2  ,SCREEN_H/2+50,3,GameController::getInstance(),"");
    not->setTag(100);
    GameController::getInstance()->addChild(not);`
4

2 に答える 2

7

notは C++ のキーワードです ( のエイリアス!)。変数の名前を別の名前に変更します。

于 2013-06-20T07:19:13.623 に答える
1

not!演算子のエイリアスである C++ キーワードです。

Microsoft Visual C++ は、Microsoft が気に入らなければ仕様に従わないことでよく知られています。これは、既存のコード ベースが準拠していなかったり、仕様が気に入らなかったり、バグがあり、それを修正したくないなどの理由であったときです。移植可能であるはずのコードをチェックするために、MSVC++ に依存しないでください。

于 2013-06-20T07:21:09.653 に答える