error: no viable conversion from 'ListNode' to 'ListNode *'
时间: 2023-12-23 14:03:31 浏览: 535
这错误表明在代码中发生了一个无法从ListNode' 类型转换 'ListNode *' 类的转换问题。在C++中,ListNode' 是一个对象类型而 'ListNode *' 是指向 'ListNode' 对象的指针类型。
要解决这错误,你需要确适当的地方指针类型。例如,你有一个指向 'ListNode' 对象的指针,你可以将其分配给另一个 'ListNode *' 类型的指针变量。
如果你能提供更多的代码或上下文,我可以给出更具体的帮助。
相关问题
tool_file.cpp:36:15: error: no viable conversion from 'QSettings *' to 'QSettings'
这个错误提示意味着在`tool_file.cpp`文件的第36行,有一个尝试将`QSettings *`类型的指针转换成`QSettings`类型的实例,但是编译器找不到可行的转换方法。这通常是因为你在试图直接使用指向的`QSettings`对象,而不是解引用它。可能是下面几种情况之一:
1. **赋值**:你可能在尝试赋值给另一个`QSettings`实例,但你应该先解引用指针。
```cpp
QSettings *qsettings = new QSettings(...); // 创建一个指针
*qsettings = anotherSettings; // 解引用并赋值
```
2. **函数参数**:如果你在一个需要`QSettings`实例作为参数的函数里,应该传递指针的内容,而不是指针本身。
```cpp
function(qsettings->allKeys()); // 调用方法,传递指针的内容
```
3. **构造函数**:如果试图使用指针创建一个新的`QSettings`,确保正确地传递了必要的参数。
```cpp
QSettings newSettings(*qsettings); // 使用指针实例化新的对象
```
解决这个问题的关键在于确保正确地处理了指针,要么解引用后再操作,要么传递其实际内容到函数或构造函数。检查36行的具体代码以确定正确的修复方法。
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` 添加到场景图中。
阅读全文