如何使用 c++ 在 cocos2dx 中定义非静态方法
How to define non-static method in cocos2dx with c++
我想定义一个自定义的非静态方法,如下所示:
这是.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:cocosonestepClassesHelloWorldScene.cpp 14
Error (active) E0330 "cocos2d::Sprite::Sprite(const cocos2d::Sprite &)" (declared at line 725 of "d:cocosonestepcocos2dcocos2dCCSprite.h") is inaccessible onestep d:cocosonestepClassesHelloWorldScene.cpp 19
Error (active) E0330 "cocos2d::Sprite::Sprite(const cocos2d::Sprite &)" (declared at line 725 of "d:cocosonestepcocos2dcocos2dCCSprite.h") is inaccessible onestep d:cocosonestepClassesHelloWorldScene.cpp 20
Error (active) E0020 identifier "visibleSize" is undefined onestep d:cocosonestepClassesHelloWorldScene.cpp 51
你错过了*
(指针(
在.h
应该是
cocos2d::Sprite* getMySpriteByName(const std::string &name);
cocos2d::Sprite* getBrickByName(const std::string &name);
在.cpp
应该是
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;
}
相关文章:
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 如何通过命名空间调用非静态方法
- 如何在没有实例的情况下获取非静态方法的类型?
- 调用从模板派生的类的静态方法,而不指定模板
- 编译器无法识别在类声明之外定义的方法
- 为什么链接器报告全局函数的乘法定义符号,而不是类静态方法
- 如何使用 c++ 在 cocos2dx 中定义非静态方法
- 未解析的外部符号静态变量(标头中定义的方法使用的变量)
- 是否可以从 cpp 中定义的静态方法调用私有构造函数
- 只在.cpp中声明/定义静态方法可以吗
- 从C调用静态C++方法在编译时会给出未定义的引用
- 未定义已声明的错误c++静态方法
- 为什么我的静态方法的返回值与定义的构造函数(在 c++ 中)之间存在类型不匹配?
- 静态方法声明但未定义错误c++
- 对静态方法的未定义引用
- 嵌套类,未定义引用,静态方法
- 对类的静态方法成员的未定义引用
- 在函数内部定义静态对象是正确的方法吗?
- 对静态方法错误的未定义引用
- 在源文件中定义静态方法,并在C++的头文件中声明