main.cc:244:36: error: invalid conversion from ‘void*’ to ‘std::vector<Airline>*’ [-fpermissive] 244 | vector<Airline>* shared = shmat(shmid, nullptr, 0); | ~~~~~^~~~~~~~~~~~~~~~~~~ | | | void*
时间: 2023-10-19 08:07:31 浏览: 169
这个错误提示是因为在代码的第244行中,将一个`void*`类型的指针直接赋值给了`std::vector<Airline>*`类型的指针,这是一种无效的转换。
`shmat()`函数返回的是`void*`类型的指针,它表示共享内存区域的起始地址。然而,你试图将这个`void*`指针直接赋值给一个`std::vector<Airline>*`类型的指针变量 `shared`,这是不正确的。
要解决这个错误,你需要使用`static_cast`或者C风格的类型转换将`void*`指针转换为正确的类型。对于指针类型之间的转换,可以使用`static_cast`进行显式转换,如下所示:
```cpp
vector<Airline>* shared = static_cast<vector<Airline>*>(shmat(shmid, nullptr, 0));
```
或者使用C风格的强制类型转换:
```cpp
vector<Airline>* shared = (vector<Airline>*)shmat(shmid, nullptr, 0);
```
请注意,在进行指针类型转换时要格外小心,确保转换是安全和合理的,以避免潜在的运行时错误。
阅读全文