C++ 如何用c++;
我想定义一个自定义的非静态方法,如下所示: 这是C++ 如何用c++;,c++,cocos2d-x,C++,Cocos2d X,我想定义一个自定义的非静态方法,如下所示: 这是.h文件 #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::Scene { private: Director *dir; SpriteFrameCache *spriteCache; Size visiableSize; Ve
.h
文件
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
class HelloWorld : public cocos2d::Scene
{
private:
Director *dir;
SpriteFrameCache *spriteCache;
Size visiableSize;
Vec2 visialbeOrigin;
cocos2d::Sprite getMySpriteByName(const std::string &name);
cocos2d::Sprite getBrickByName(const std::string &name);
public:
static cocos2d::Scene* createScene();
virtual bool init();
// a selector callback
void menuCloseCallback(cocos2d::Ref* pSender);
// implement the "static create()" method manually
CREATE_FUNC(HelloWorld);
};
#endif // __HELLOWORLD_SCENE_H__
下面是如何在.cpp
文件中定义getMySpriteByName()
和getBrickByName
:
cocos2d::Sprite HelloWorld::getMySpriteByName(const std::string &name) {
return Sprite::createWithSpriteFrameName(name);
}
cocos2d::Sprite HelloWorld::getBrickByName(const std::string &name) {
auto brickSprite = this->getMySpriteByName(name);
return brickSprite;
}
但是IDE或编译器不允许我这么做
我做错了什么
生成错误是:
Severity Code Description Project File Line Suppression State
Error (active) E0415 no suitable constructor exists to convert from "cocos2d::Sprite *" to "cocos2d::Sprite" onestep d:\cocos\onestep\Classes\HelloWorldScene.cpp 14
Error (active) E0330 "cocos2d::Sprite::Sprite(const cocos2d::Sprite &)" (declared at line 725 of "d:\cocos\onestep\cocos2d\cocos\2d\CCSprite.h") is inaccessible onestep d:\cocos\onestep\Classes\HelloWorldScene.cpp 19
Error (active) E0330 "cocos2d::Sprite::Sprite(const cocos2d::Sprite &)" (declared at line 725 of "d:\cocos\onestep\cocos2d\cocos\2d\CCSprite.h") is inaccessible onestep d:\cocos\onestep\Classes\HelloWorldScene.cpp 20
Error (active) E0020 identifier "visibleSize" is undefined onestep d:\cocos\onestep\Classes\HelloWorldScene.cpp 51
您错过了
*
(指针)
在.h
中应
cocos2d::Sprite* getMySpriteByName(const std::string &name);
cocos2d::Sprite* getBrickByName(const std::string &name);
cocos2d::Sprite* HelloWorld::getMySpriteByName(const std::string &name) {
return Sprite::createWithSpriteFrameName(name);
}
cocos2d::Sprite* HelloWorld::getBrickByName(const std::string &name) {
auto brickSprite = this->getMySpriteByName(name);
return brickSprite;
}
在.cpp
中应
cocos2d::Sprite* getMySpriteByName(const std::string &name);
cocos2d::Sprite* getBrickByName(const std::string &name);
cocos2d::Sprite* HelloWorld::getMySpriteByName(const std::string &name) {
return Sprite::createWithSpriteFrameName(name);
}
cocos2d::Sprite* HelloWorld::getBrickByName(const std::string &name) {
auto brickSprite = this->getMySpriteByName(name);
return brickSprite;
}
您错过了
*
(指针)
在.h
中应
cocos2d::Sprite* getMySpriteByName(const std::string &name);
cocos2d::Sprite* getBrickByName(const std::string &name);
cocos2d::Sprite* HelloWorld::getMySpriteByName(const std::string &name) {
return Sprite::createWithSpriteFrameName(name);
}
cocos2d::Sprite* HelloWorld::getBrickByName(const std::string &name) {
auto brickSprite = this->getMySpriteByName(name);
return brickSprite;
}
在.cpp
中应
cocos2d::Sprite* getMySpriteByName(const std::string &name);
cocos2d::Sprite* getBrickByName(const std::string &name);
cocos2d::Sprite* HelloWorld::getMySpriteByName(const std::string &name) {
return Sprite::createWithSpriteFrameName(name);
}
cocos2d::Sprite* HelloWorld::getBrickByName(const std::string &name) {
auto brickSprite = this->getMySpriteByName(name);
return brickSprite;
}
与您的问题或问题完全无关,但不要在程序中使用带双前导下划线的符号(例如
\uuuuuuu HELLOWORLD\uu SCENE\uuuuu
)。在所有范围内都保留这样的内容。例如,对于你的问题,如果你发布了关于构建错误的问题,你应该知道我们需要看到错误。@某个程序员,代码是由COCOS2D框架生成的,但不熟悉C++,也许你应该发布这个:与你的问题或问题完全无关。但不要在程序中使用带双前导下划线的符号(例如\uuuuuuuhelloworld\uuu SCENE\uuuuuuuu
)。在所有范围内都保留这样的内容。例如,对于你的问题,如果你发布了一个关于构建错误的问题,你应该知道,我们需要看到错误。@代码程序员是由COCOS2D框架生成的,而不是熟悉C++。也许你应该发布这样一个问题:d我没有直接找到这个问题的原因是Visual Studio在编辑器中给出了一个误导性的信息,说有些东西是不可访问的@armnotstrong仅供参考:有了Cocos2d-x百人即时帮助其社区似乎是一个有前途的社区,感谢您提醒我,我没有直接找到这一点的原因是Visual Studio在编辑器中给出了一个误导性的信息,即“有些东西无法访问”
@armnotstrong仅供参考:有了Cocos2d-x,百人即时帮助社区似乎是一个很有前途的社区,感谢您提醒