나는 C++ 프로그램을 가지고있다 :C++. 오류 : void는 포인터 - 개체 유형이 아닙니다.
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";
}
};
컴파일시 오류가 발생한다.
error: ‘void*’ is not a pointer-to-object type
누군가이 오류를 생성하기 위해 내가 잘못하고있는 것을 설명 할 수 있는가?
예, 있습니다. 'args'에 다른 데이터 형을 주려고 했습니까? – Blender
이 예제에서는 "추상 형식"(추상적 기본 클래스를 의미하는 것으로 가정)이 없습니다. 아마도'* (arguments *) args'를 의미 할 것입니다.'args'는'void *'에서'arguments *'로 캐스팅되어, 다시 참조됩니다. 현재 코드는'void *'를 역 참조하려고합니다. (불법입니다.) 그리고 나서 역 참조 된 값을'arguments *'에 캐스트합니다. 이것은 거의 당신이 의도 한 것이 아닙니다. –
@Chris 네, 그게 내가 해두려고했던 것입니다. 설명해 주셔서 감사합니다. Btw, 나는 구조체와 클래스가 추상적 인 유형으로 간주되는 동안 생각했다. int, float는 비 추상입니다. –