簡體   English   中英

OGRE不存在合適的轉換函數

[英]OGRE No suitable conversion function exists

我很難在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 *”

Ogre API說:

const RenderSystemList &    getAvailableRenderers (void)

因此,它返回一個const引用而不是一個指針。 像這樣修改您的代碼

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

getAvailableRenderers方法不會返回指向RenderSystemList的指針。 您希望將值存儲在對RenderSystemList的引用中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM