无效指针转换错误
Void pointer conversion error
这是我的代码
保利·
#include "gf.h"
typedef struct polynome {
int deg, size;
gf_t * coeff;
} * poly_t; /* polynomial has coefficients in the finite field */
class Polinomio{
public:
int poly_degppf(poly_t g);
聚.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "gf.h"
#include "poly.h"
Polinomio::Polinomio(int n){
printf("Hola como estas");
}
int Polinomio::poly_degppf(poly_t g) {
int i, d, res;
poly_t *u;
d = poly_deg(g);
u = malloc(d * sizeof (poly_t*));
为什么我会收到此错误?
poly.cpp: In member function ‘int Polinomio::poly_degppf(polynome*)’:
poly.cpp:261: error: invalid conversion from ‘void*’ to ‘polynome**’
C++对类型比C更谨慎一些。所以你必须投出你的malloc
电话。喜欢这个:
u = (poly_t*)malloc(d * sizeof (poly_t));
请注意,我还更改了 sizeof
上的参数,您希望类型的大小而不是指向类型的指针的大小。
最后,不要在C++上使用malloc
,使用new
。
还有一件事,poly_t
已经是指针类型,您可能希望将u
声明为poly_t u;
但我不知道您如何在其余代码中使用它。
因为C++不允许将void *
隐式转换为另一个对象指针。您需要使强制转换显式:
u = static_cast<polynome**>(malloc(d * sizeof(polynome*)));
基本上,每当一个转换是隐式的(例如T *
到void *
),相反的转换都需要static_cast
。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- C++使用params创建线程函数会导致转换错误
- 在混合代码库中将C转换为C++时出现许多包含错误
- 为什么g++在未执行的代码处标记强制转换错误
- 错误:从"int"到枚举c++的转换无效
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 从标准::未来<void>到非标量标准::未来<bool>引发的错误转换
- 使用宏的错误转换
- 在 opencv 中使用 Color_YUV2BGR 从 YUV 到 BGR 的错误转换
- 无法通过此操作,因为类型的错误转换
- PyQt5:使用自定义信号时 int 对象的错误转换
- 从长途错误转换
- C 错误:转换为非量表类型
- C 错误:转换为执行字符集
- 使用SOCI从PostgreSQL数据库获取数据时发生错误转换
- 分段错误C++转换问题
- 在ARM上的Qt中从双精度到QString的错误转换
- C++浮点转换为Python浮点错误转换
- 错误:转换为非标量类型