OGRE 不存在合适的转换函数
Posted
技术标签:
【中文标题】OGRE 不存在合适的转换函数【英文标题】:OGRE No suitable conversion function exists 【发布时间】:2014-07-15 22:40:07 【问题描述】:我很难在 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: 'initializing' : 无法从 'const Ogre::RenderSystemList' 转换为 'Ogre::RenderSystemList *'
【问题讨论】:
【参考方案1】:getAvailableRenderers
方法不返回指向RenderSystemList
的指针。您希望将值存储在对 RenderSystemList
的引用中:
RenderSystemList const& renderSystems = mRoot->getAvailableRenderers();
【讨论】:
谢谢。现在的问题是renderSystems->begin()
和renderSystems->end()
应该是指针。这是我得到的错误:Expression must have a pointer type
renderSystems 不是指针。您使用.
而不是->
。 ->
运算符仅用于指针。【参考方案2】:
Ogre API 说:
const RenderSystemList & getAvailableRenderers (void)
所以它返回一个常量引用而不是一个指针。 像这样修改你的代码
const RenderSystemList &renderSystems = mRoot->getAvailableRenderers();
【讨论】:
以上是关于OGRE 不存在合适的转换函数的主要内容,如果未能解决你的问题,请参考以下文章
不存在合适的构造函数来将“test *”转换为“test”,构造函数,
不存在从 std 字符串到 const char * 的合适转换函数
不存在从“const std::string”到“char *”的合适转换函数?
OpenCv 第一步 - 不存在合适的构造函数来将“IplImage *”转换为“cv::_InputArray”
如何摆脱“Intellisense:没有合适的转换函数从“std::string”到“std::string *”存在”错误?