【发布时间】:2023-03-25 04:34:01
【问题描述】:
我正在使用 cocos2d-x 创建我的项目,但我收到了这个错误:
错误(活动)“CocosDenshion::SimpleAudioEngine::SimpleAudioEngine()” (在“c:\MyGame”的第 256 行声明 \cocos2d\cocos\audio\include\SimpleAudioEngine.h") 是 无法访问 MyGame c:\MyGame\Classes\MyGame .cpp
所以我将 SimpleAudioEngine.h 文件包含到我的 CPP 文件中,以便使用它。从错误中可以看出,要使用 SimpleAudioEngine,我需要先使用 CocosDenshion 命名空间,但是一旦我完成输入:
CocosDenshion::SimpleAudioEngine()
Visual Studio 向我显示此错误,VS 可以向我显示声明,以便告诉我它知道标题在哪里并且可以读取。所以我不知道无法访问的问题是什么。头文件无法访问的原因是什么?
MyGame.cpp
#include "MyGame.h"
#include "SimpleAudioEngine.h"
#include "GlobalVariables.h"
USING_NS_CC;
Scene* MyGame::createScene()
{
auto scene = Scene::create();
auto layer = MyGame::create();
scene->addChild(layer);
return scene;
}
bool MyGame::init()
{
if (!Layer::init())
{
return false;
}
is_dragged = false;
const char* MUSIC_PATH = "Music/Main_Theme_loop.ogg";
initTouch();
initTiled();
tempSetupSprite();
debugDrawLine();
this->scheduleUpdate();
return true;
}
MyGame.h
#include "GameSprite.h"
#include "GameMap.h"
class MyGame : public cocos2d::Layer
{
private:
void update(float dt);
void initTouch();
void initTiled();
void tempSetupSprite();
void debugDrawLine();
public:
static cocos2d::Scene* createScene();
virtual bool init();
virtual bool onTouchBegan(cocos2d::Touch* _touch, cocos2d::Event* _event);
virtual void onTouchEnded(cocos2d::Touch* _touch, cocos2d::Event* _event);
virtual void onTouchMoved(cocos2d::Touch* _touch, cocos2d::Event* _event);
virtual void onTouchCancelled(cocos2d::Touch* _touch, cocos2d::Event* _event);
CREATE_FUNC(MyGame);
private:
bool is_dragged;
Vec2 first_touch;
Vec2 last_drag_touch;
GameSprite* sprite;
GameMap* map;
};
【问题讨论】:
-
这意味着
SimpleAudioEngine的默认构造函数是private或protected。 -
再次阅读错误信息。并不是说头文件不可访问;它说构造函数
CocosDenshion::SimpleAudioEngine::SimpleAudioEngine()不可访问(可能是私有的)。
标签: c++ cocos2d-x header-files