Tengo un programa en C++:C++. Error: void no es un tipo puntero a objeto
struct arguments
{
int a, b, c;
arguments(): a(3), b(6), c(9) {}
};
class test_class{
public:
void *member_func(void *args){
arguments vars = (arguments *) (*args); //error: void is not a
//pointer-to-object type
std::cout << "\n" << vars.a << "\t" << vars.b << "\t" << vars.c << "\n";
}
};
En compilar arroja un error:
error: ‘void*’ is not a pointer-to-object type
Puede alguien explicar lo que estoy haciendo mal a producir este error?
Sí, la hay. ¿Has intentado darle a 'args' otro tipo de datos? – Blender
No tiene ningún "tipo abstracto" (supongo que quiere decir clases base abstractas) en este ejemplo. Probablemente quiera decir '* (arguments *) args', que convierte' args' de 'void *' a 'arguments *', _then_ lo hace de referencia. Tu código actual intenta desreferenciar un 'void *' (que es ilegal), luego convierte el valor desreferenciado a 'arguments *', que seguramente no es lo que pretendías. –
@Chris Sí, eso es lo que estaba tratando de hacer, gracias por la aclaración. Por cierto, pensé que las estructuras y las clases se consideraban tipos abstractos, por ejemplo. int, float no son abstractos. –