osgengine.cpp:530:16: error: no matching member function for call to 'addChild' Group:51:22: note: candidate function not viable: no known conversion from 'osgDB::DatabasePager *' to 'osg::Node *' for 1st argument Group:53:32: note: candidate template ignored: could not match 'ref_ptr<type-parameter-0-0>' against 'osgDB::DatabasePager *'
时间: 2024-03-05 19:48:21 浏览: 97
这个错误发生的原因是在addChild()方法中传入了一个osgDB::DatabasePager类型的指针,而addChild()方法的参数需要是osg::Node类型的指针。
根据错误提示,你在 Group 类型的 addChild() 方法中传入了一个 osgDB::DatabasePager 对象的指针,因此编译器找不到与之匹配的 addChild() 方法。
解决这个问题可以通过将osgDB::DatabasePager对象加入到场景图中,例如:
```
osg::ref_ptr<osgDB::DatabasePager> pager = new osgDB::DatabasePager;
root->addChild(pager.get());
```
然后在Group类型的addChild()方法中传入一个osg::Node类型的指针,例如:
```
osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("model.osg");
group->addChild(model.get());
```
这样就可以避免上述错误了。需要注意的是,在使用osgDB::DatabasePager时,需要保证场景图的线程安全。
相关问题
logwidget.cpp:46:9: error: no matching function for call to 'information' qmessagebox.h:185:27: note: candidate function not viable: requires at least 3 arguments, but 2 were provided qmessagebox.h:217:34: note: candidate function not viable: requires at least 4 arguments, but 2 were provided qmessagebox.h:207:16: note: candidate function not viable: requires at least 4 arguments, but 2 were provided qmessagebox.h:210:16: note: candidate function not viable: requires at least 4 arguments, but 2 were provided
这个错误表示在logwidget.cpp文件的第46行调用了一个名为'information'的函数,但是提供的参数数量不正确。根据错误信息,QMessageBox类中没有接受2个参数的名为'information'的函数。
QMessageBox类中的information函数至少需要3个参数。通常,它接受一个父对象、对话框标题和消息文本作为参数。请确保您在logwidget.cpp文件的第46行提供了这三个参数。
例如,您可以使用以下代码调用QMessageBox的information函数:
```cpp
QMessageBox::information(this, "标题", "消息文本");
```
请根据您的需求修改参数,并确保正确地调用了QMessageBox的information函数。重新编译您的代码,应该就能解决这个错误了。
monitorsystem.cpp:292:5: error: no matching function for call to 'number' qstring.h:757:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'int' for 1st argument qstring.h:758:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'uint' (aka 'unsigned int') for 1st argument qstring.h:759:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'long' for 1st argument qstring.h:760:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'ulong' (aka 'unsigned long') for 1st argument qstring.h:761:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'qlonglong' (aka 'long long') for 1st argument qstring.h:762:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'qulonglong' (aka 'unsigned long long') for 1st argument qstring.h:763:20: note: candidate function not viable: no known conversion from 'quint8 [6]' to 'double' for 1st argument
这个错误提示是因为在调用 QString::number() 函数时,将一个 quint8 数组作为参数传递给了该函数,但是 QString::number() 函数没有接受 quint8 数组作为参数的重载函数。
如果要将 quint8 数组转换为 QString 类型,可以使用 QByteArray 类型的 fromRawData() 函数和 QString 的构造函数。具体做法如下:
```
quint8 a[6] = {1, 2, 3, 4, 5, 6};
int size = sizeof(quint8) * 6;
QString result = QString::fromUtf8(QByteArray::fromRawData(reinterpret_cast<const char*>(a), size), size);
// result 的值为 ""
```
在这个例子中,fromRawData() 函数接受两个参数:一个指向字符数组的指针和数组的大小。首先将 quint8 数组转换为 char 数组的指针,然后使用该指针和数组的大小作为参数调用 fromRawData() 函数,得到一个 QByteArray 类型的对象。接着使用 QString 的构造函数将 QByteArray 类型的对象转换为 QString 类型的字符串。需要注意的是,构造函数的第二个参数指定的是字符串的长度。在这个例子中,由于 quint8 数组的大小为 6,因此字符串的长度也应该为 6。
阅读全文