[Error] invalid conversion from 'long long int*' to 'll' {aka 'long long int'} [-fpermissive]
时间: 2023-11-26 16:03:05 浏览: 278
这个错误提示是因为你尝试将一个指向 long long int 型的指针转换为 ll(long long int)类型,但是这种转换是不允许的。你应该使用解引用操作符 `*` 来获取指针指向的值,然后再进行类型转换。例如:
```cpp
long long int* ptr = ...; // 指向 long long int 型的指针
long long int value = *ptr; // 使用解引用操作符获取指针指向的值
ll convertedValue = static_cast<ll>(value); // 进行类型转换
```
请注意,这只是一个示例,具体的代码可能需要根据你的需求进行调整。
相关问题
[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 'int*' to 'int' [-fpermissive]
这个错误通常是因为将一个 int 指针赋值给一个 int 类型的变量,或者将 int 指针作为参数传递给需要 int 类型参数的函数。
比如以下代码就会出现这个错误:
```
int* ptr = new int(10); // 创建一个 int 指针并初始化为 10
int a = ptr; // 错误:将 int 指针赋值给 int 类型变量
```
解决方法是将指针解引用,获取其指向的值:
```
int* ptr = new int(10); // 创建一个 int 指针并初始化为 10
int a = *ptr; // 正确:获取 ptr 指向的值并赋值给 a
```
或者将函数参数改为接受 int 指针类型:
```
void func(int* ptr) {
// ...
}
int main() {
int a = 10;
func(&a); // 传递 a 的地址给函数
return 0;
}
```