Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类所需的类型说明符_C++_Ogre3d_Resourcemanager - Fatal编程技术网

C++ 类所需的类型说明符

C++ 类所需的类型说明符,c++,ogre3d,resourcemanager,C++,Ogre3d,Resourcemanager,我试图在我的levelmanager中使用我的类资源管理,这样我就可以开始创建资源了 但是,我得到以下错误 严重性代码说明项目文件行抑制状态 错误C4430缺少类型说明符-假定为int。注:C++不 支持默认的int-levelmanager.h49 严重性代码说明项目文件行抑制状态 错误C2143语法错误:缺少“;”之前 “*”Diabro levelmanager.h 49 我在LevelManager.h中声明了ResourceManagement类 private: Ogre::

我试图在我的levelmanager中使用我的类资源管理,这样我就可以开始创建资源了

但是,我得到以下错误

严重性代码说明项目文件行抑制状态 错误C4430缺少类型说明符-假定为int。注:C++不 支持默认的int-levelmanager.h49

严重性代码说明项目文件行抑制状态 错误C2143语法错误:缺少“;”之前 “*”Diabro levelmanager.h 49

我在LevelManager.h中声明了ResourceManagement类

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++基础。