D:\QTprojiect\Data_Analysis_tool\main.cpp:14: error: no viable conversion from 'QAxObject *' to 'QAxObject'
时间: 2024-04-06 13:31:51 浏览: 80
这个错误是因为你在进行类型转换时出了问题。可能是因为你在某些地方使用了指针而不是实际的对象,导致编译器无法正确地进行类型转换。
建议你仔细检查代码中涉及到类型转换的地方,确认是否使用了正确的对象或指针,并确保代码中所有需要进行类型转换的地方都能够正确地进行转换。另外,你也可以考虑使用动态类型转换(dynamic_cast)来避免这种类型转换错误的发生。
相关问题
D:\Qt\Scada_IPCE\IPCE_Core\Main\main.cpp:18: error: no viable overloaded '='
这个错误通常出现在你尝试将一个值赋给一个不兼容的类型的变量时。在给出的错误信息中,指定了发生错误的文件和行号,即D:\Qt\Scada_IPCE\IPCE_Core\Main\main.cpp的第18行。
要解决这个问题,首先需要检查第18行的代码,找到出错的赋值语句。然后,确保将正确类型的值赋给该变量。可能需要检查变量的声明和初始化,以确保其类型与所赋的值兼容。
如果你能提供第18行的代码和相关上下文,我就可以给出更具体的帮助。
widget.cpp:170:33: error: no viable conversion from 'osgEarth::SkyNode *' to 'osg::ref_ptr<osg::Drawable>' ref_ptr:37:9: note: candidate constructor not viable: no known conversion from 'osgEarth::SkyNode *' to 'osg::Drawable *' for 1st argument ref_ptr:38:9: note: candidate constructor not viable: no known conversion from 'osgEarth::SkyNode *' to 'const osg::ref_ptr<osg::Drawable> &' for 1st argument ref_ptr:40:9: note: candidate constructor not viable: no known conversion from 'osgEarth::SkyNode *' to 'observer_ptr<osg::Drawable> &' for 1st argument ref_ptr:39:31: note: candidate template ignored: could not match 'ref_ptr<type-parameter-0-0>' against 'osgEarth::SkyNode *'
看起来你正在将 `osgEarth::SkyNode` 类型的对象直接赋值给了 `osg::ref_ptr<osg::Drawable>` 类型的变量,这是不兼容的,因为 `SkyNode` 并不是继承自 `Drawable`。
正确的写法应该是创建一个 `osg::Geode` 对象,将 `SkyNode` 添加到 `osg::Geode` 中,然后将 `osg::Geode` 添加到场景图中。以下是一个示例代码:
```
osg::ref_ptr<osg::Geode> skyGeode = new osg::Geode();
osg::ref_ptr<osgEarth::Util::SkyNode> skyNode = new osgEarth::Util::SkyNode(osgEarth::Util::SkyOptions());
skyGeode->addDrawable(skyNode.get());
root->addChild(skyGeode.get());
```
这将创建一个 `osgEarth::Util::SkyNode` 对象,并将其添加到 `osg::Geode` 中,然后将 `osg::Geode` 添加到场景图中。
阅读全文