C++ 类所需的类型说明符
我试图在我的levelmanager中使用我的类资源管理,这样我就可以开始创建资源了 但是,我得到以下错误 严重性代码说明项目文件行抑制状态 错误C4430缺少类型说明符-假定为int。注:C++不 支持默认的int-levelmanager.h49 严重性代码说明项目文件行抑制状态 错误C2143语法错误:缺少“;”之前 “*”Diabro levelmanager.h 49 我在LevelManager.h中声明了ResourceManagement类C++ 类所需的类型说明符,c++,ogre3d,resourcemanager,C++,Ogre3d,Resourcemanager,我试图在我的levelmanager中使用我的类资源管理,这样我就可以开始创建资源了 但是,我得到以下错误 严重性代码说明项目文件行抑制状态 错误C4430缺少类型说明符-假定为int。注:C++不 支持默认的int-levelmanager.h49 严重性代码说明项目文件行抑制状态 错误C2143语法错误:缺少“;”之前 “*”Diabro levelmanager.h 49 我在LevelManager.h中声明了ResourceManagement类 private: Ogre::
private:
Ogre::Entity* _playerEntity;
ResourceManagement* mgr;
然后在LevelManager.cpp中这样使用它
mgr->createResource("Diabro\Diabro\media\models", "MESH", "ninja.mesh", "Mesh", "meshes"); //location of file, codeType of resourcetype, name of resource, type of resource, resourcegroup
mgr->loadResource("meshes");
mgr->reloadResource("ninja.mesh", "meshes");
mgr->unloadResource("ninja.mesh", "meshes");
资源管理课
void ResourceManagement::initialize()
{
_groupManager == new Ogre::ResourceGroupManager;
}
void ResourceManagement::createResource(std::string pLocation, std::string pLocType, std::string pResourceName, std::string pResourceType, std::string pGroupName)
{
_groupManager->getSingleton().addResourceLocation(pLocation , pLocType);
_groupManager->getSingleton().declareResource(pResourceName, pResourceType, pGroupName);
_groupManager->getSingleton().initialiseResourceGroup(pGroupName);
// Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); can be used to just load all, need decision which we want
}
void ResourceManagement::unloadResource(std::string pResourceName, std::string pGroupName) // unloads a single resource
{
Ogre::ResourcePtr ptr = _resourceMgr->getResourceByName(pResourceName);
ptr->unload();
_resourceMgr->remove(pResourceName);
}
void ResourceManagement::unloadResourceGoup(std::string pGroupName)
{
_groupManager->getSingleton().unloadResourceGroup(pGroupName);
}
void ResourceManagement::loadResource(std::string pGroupName)
{
_groupManager->getSingleton().loadResourceGroup(pGroupName);
}
void ResourceManagement::reloadResource(std::string pResourceName, std::string pGroupName)
{
Ogre::ResourcePtr ptr = _resourceMgr->load(pResourceName, pGroupName);
ptr->escalateLoading();
ptr->reload();
}
您可以向我们展示您的
ResourceManagement
类吗?Ogre::Entity
和ResourceManagement
的声明需要对编译器可见(例如,从另一个头文件),然后才能从LevelManager h中显示代码。如果任一声明都不可见,这将解释错误消息。类似地,ResourceManager
的定义(不仅仅是声明)需要在调用其成员函数之前对编译器可见。@编译器不需要函数的定义。链接器需要定义,在编译完成后调用链接器。在这些定义之前应该至少有一个错误,可能与缺少类型声明有关。(我的水晶球认为它是ResourceManagement
,并且你的标题有一个循环依赖项。)对不起,我不会这么做。你正试图跳进C++和OGRE一起学习,这是一个灾难的处方。相反,你需要先学习C++基础,而不是OGRE——从一个C++基础教程开始。在您遵循基本文本并创建一个包含多个源文件和(至少)一个头文件的简单项目之前,我上面的评论或我可能给出的任何示例对您来说都没有任何意义。一旦你理解了C++基础,你就可以开始学习OGRE了——因为OGRE文档假设你已经知道那些C++基础。