invalid conversion from ‘void**’ to ‘ddsi_serdata**
时间: 2023-12-01 16:03:23 浏览: 75
这个错误通常是由于类型不匹配引起的。在这个特定的引用中,可能是因为在函数调用中使用了错误的指针类型。具体来说,可能是因为将void指针转换为ddsi_serdata指针时出现了问题。这可能是因为指针类型不匹配或者指针没有被正确初始化。要解决这个问题,您可以检查代码中的指针类型和初始化,并确保它们与函数调用的要求相匹配。
相关问题
[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` 进行安全的类型转换。
[Error] invalid conversion from 'void*' to 'void**' [-fpermissive]
这个错误信息来自于C++编程,"invalid conversion from 'void*' to 'void**'" 是说你试图将一个指向 void 的指针 (void*) 转换为指向 void 指针数组的指针 (void**)。在C++中,`void*` 和 `void**` 是两个不同的类型,前者是一般指向任意类型的指针,而后者是一个指针到指针的类型,用于存储 `void*` 类型的地址。
当你尝试这样做时,可能是遇到了需要动态内存分配并返回指向该内存的指针的情况,但是没有正确地转换类型。例如,在C++中,使用 `new` 运算符创建一个数组并且返回其指针时,你应该得到 `void**` 而不是 `void*`。
修复这个问题通常需要明确指定转换,如:
```cpp
void* ptr = ...; // 假设已经有一个void*类型的指针
void** array = &ptr; // 正确转换为指向void*指针的指针
```
或者如果你确实需要创建一个新的动态内存数组,应使用 `new[]` 并获取正确的指针类型:
```cpp
void** array = new void*[size]; // 创建一个void*指针数组
array[index] = new void[...]; // 分配单个元素的空间
```
阅读全文