2013-12-17 61 views
-2

我的cocos2d-x代碼中存在一些問題。 我在這裏發佈我的代碼。CC_SYNTHESIZE(int,beadColor,_BeadColor);在非靜態成員函數之外無效使用'this'

BeadSprite.h

#include "cocos2d.h" 
#include "iSet.h" 
#include "LHSprite.h" 

enum{ 
    BlueBead = 1, 
    RedBead = 2, 
    GreenBead = 3, 
    WhiteBead = 4, 
    BlackBead = 5, 
    HeartBead = 6, 
    StrongBlueBead = 7, 
    StrongRedBead = 8, 
    StrongGreenBead = 9, 
    StrongWhiteBead = 10, 
    StrongBlackBead = 11, 
    StrongHeartBead = 12, 
    ClearBead = 13, 
}; 

USING_NS_CC; 

class BeadSprite : public LHSprite 
{ 
private: 

    void changeBeadColorAction(int ToColor); 
    void changeBeadColor(int ToColor); 
    void boombBeads(int ToColor); 
    void boombStrongBeads(int ToColor); 
    void boombStrongFX(); 
    void runShatterEffectWithCan(CCDelayTime* time); 
public: 
    /*static LHSprite* spriteWithName(const std::string& spriteName, 
            const std::string& sheetName, 
            const std::string& spriteHelperFile);*/ 
    CC_SYNTHESIZE(int, beadColor, _BeadColor); 
}; 

#endif 

BeadSprite.cpp

#include "BeadSprite.h" 
using namespace cocos2d; 

void FsetBeadColor(const std::string& color){ 
    if(color == "BlueBead") this->beadColor = BlueBead; <-Invalid use of 'this' outside of a non-static member function 
    if(color == "RedBead") this->beadColor = RedBead; <-Invalid use of 'this' outside of a non-static member function 
    if(color == "GreenBead") this->beadColor = GreenBead; <-Invalid use of 'this' outside of a non-static member function 
    if(color == "WhiteBead") this->beadColor = WhiteBead; <-Invalid use of 'this' outside of a non-static member function 
    if(color == "BlackBead") this->beadColor = BlackBead; <-Invalid use of 'this' outside of a non-static member function 
    if(color == "HeartBead") this->beadColor = HeartBead; <-Invalid use of 'this' outside of a non-static member function 
} 

void changeBeadColorAction(int ToColor){ 

} 

錯誤: BeadSprite.cpp:31:29:無效使用的 '本' 的非靜態成員函數

以外

如何解決這個錯誤?請:( 此使用的cocos2d-x-2.2.1

+0

你期望這是指向 – Mark

+0

這句話「‘這個’非靜態成員函數之外」是平原愚蠢 - FsetBeadColor是沒有連接到任何一個獨立的功能類(給你的編譯器一個耳光) –

+0

@DieterLücking:We ll,'this'只在非靜態成員函數中有效,所以在該上下文之外使用'this'是一個錯誤。所以這個錯誤在技術上是正確的......它讓我想起舊的GCC未定義變量消息:「首先使用這個函數。」他們將其改進爲「首先使用此功能」,以消除「使用」一詞的歧義。 –

回答

3

您使用的CC_SYNTHESIZE將創建一個私有成員beadColor和公共的getter get_BeadColor和setter set_BeadColor。所以,你的函數實現的名稱有誤,需要被定性爲屬於?到類BeadSprite

void BeadSprite::set_BeadColor(const std::string& color) { 
    // ... 
} 
+0

一旦他們做了修復,他們可以刪除方法中所有不必要的'this->'。 –

+0

我試圖刪除'this->'但它不是修正錯誤。 – user3111438

+0

@ user3111438你做了其他一切嗎? –

相關問題