OGRE不存在合适的转换函数

时间:2014-07-15 22:40:08

标签: c++ visual-studio compiler-errors ogre

我很难在Visual Studio 2013中尝试编译应用程序。我已经解决了大量错误,但我无法找到最后一个解决方案。

这里是:

void Application::setupRenderSystem() {
mState->dumpValues();

String val = mState->getStringValue("renderSystem");
RenderSystemList *renderSystems = mRoot->getAvailableRenderers();
RenderSystemList::iterator r_it;    

bool renderSystemFound = false;
for (r_it = renderSystems->begin(); r_it != renderSystems->end(); r_it++) {
    RenderSystem *tmp = *r_it;
    std::string rName(tmp->getName());

    // returns -1 if string not found
    if ((int)rName.find(val) >= 0) {
        mRoot->setRenderSystem(*r_it);
        renderSystemFound = true;
        break;
    }
}        
if (!renderSystemFound) {
    OGRE_EXCEPT(0, "Specified render system (" + val + ") not found, exiting...", "Application")
}

}

Visual Studio表示行RenderSystemList *renderSystems = mRoot->getAvailableRenderers();是问题,尤其是mRoot

这是我得到的错误: 错误C2440:'初始化' :无法转换为' const Ogre :: RenderSystemList'到< Ogre :: RenderSystemList *'

2 个答案:

答案 0 :(得分:0)

Ogre API说:

const RenderSystemList &    getAvailableRenderers (void)

因此它返回一个const引用而不是指针。 像这样修改你的代码

const RenderSystemList &renderSystems = mRoot->getAvailableRenderers();

答案 1 :(得分:0)

getAvailableRenderers方法不会返回指向RenderSystemList的指针。您希望将值存储在对RenderSystemList

的引用中
RenderSystemList const& renderSystems = mRoot->getAvailableRenderers();