没有合适的转换函数

OGRE No suitable conversion function exists

本文关键字:转换 函数      更新时间:2023-10-16

我很难在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 *'

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

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

Ogre API说:

const RenderSystemList &    getAvailableRenderers (void)

返回const引用,而不是指针。像这样修改你的代码

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