invalid conversion from Qobject*’ to QAbstractEutton*’[-fpermissive] int id = group->id ( obj) ;
时间: 2024-03-18 08:40:03 浏览: 24
这个错误提示是因为在你的代码中,你将一个 `QObject` 类型的指针转换为 `QAbstractButton` 类型,而这两个类型并不兼容。
可能的原因是你在使用 `QButtonGroup` 的 `id()` 函数时,传入了一个 `QObject` 类型的对象指针,而 `id()` 函数的参数类型应该是 `QAbstractButton`。
解决方法是,确认你传入 `id()` 函数的参数是否是 `QAbstractButton` 类型的对象指针,或者将参数强制转换为 `QAbstractButton` 类型。例如:
```
int id = group->id(qobject_cast<QAbstractButton*>(obj));
```
这里使用了 `qobject_cast` 函数将 `QObject` 类型的对象指针转换为 `QAbstractButton` 类型。需要注意的是,如果转换失败,`qobject_cast` 函数会返回 `nullptr`。因此,在使用 `qobject_cast` 转换后,需要对返回值进行判断,以避免空指针异常。
相关问题
invalid conversion from 'Qobject*’ to 'QAbstractEutton*’[-fpermissive] int id = group->id ( obj) ;
这个错误的原因是你把一个 `QObject` 对象的指针转换成了 `QAbstractButton` 对象的指针,这是不允许的。`QObject` 是 `QAbstractButton` 的基类,但是反过来却不成立。
可能的解决方案是检查你的代码,确保你正在使用正确的对象类型。如果这个 `obj` 对象确实是一个 `QAbstractButton`,那么你可以尝试使用 `qobject_cast<QAbstractButton*>(obj)` 来进行类型转换。这个函数会在对象不是 `QAbstractButton` 类型的时候返回 `nullptr`,因此你需要确保在使用转换后的指针之前进行检查。
[Error] invalid conversion from void* to char** [-fpermissive]
这个错误通常是由于将 `void*` 类型的指针直接赋值给 `char**` 类型的指针导致的。因为 `void*` 类型的指针可以指向任何类型的数据,而 `char**` 类型的指针只能指向 `char*` 类型的指针。
要解决这个问题,你需要先将 `void*` 类型的指针转换为 `char*` 类型的指针,然后再将其赋值给 `char**` 类型的指针。例如:
```c++
void* data = get_data();
char* char_data = static_cast<char*>(data);
char** char_ptr = &char_data;
```
这样就可以将 `void*` 类型的指针 `data` 转换为 `char**` 类型的指针 `char_ptr` 了。注意,这里使用了 `static_cast` 进行类型转换,如果你不确定类型转换是否安全,可以使用 `dynamic_cast` 进行安全的类型转换。