我正在尝试访问在void指针中返回的对象的值,如何通过void指针变量访问那些值x和y。
如何访问该空指针中返回的值?
#include <iostream.h>
void* getDetector();
class DETECTOR
{
public:
int x;
int y;
DETECTOR();
~DETECTOR();
};
void* getDetector()
{
return &DetectorObj;
}
DETECTOR::DETECTOR()
{
x = 10;
y = 20;
}
DETECTOR::~DETECTOR(){}
DETECTOR DetectorObj;
int main()
{
void * getPtr = getDetector();
cout<<getPtr->x;
return 0;
}
答案 0 :(得分:4)
您可以通过返回对象类型并存储指向该对象的指针而不是void*
来读取对象的成员。
#include <iostream>
//DETECTOR definition..
DETECTOR DetectorObj;
DETECTOR* getDetector()
{
return &DetectorObj;
}
int main()
{
DETECTOR* getPtr = getDetector();
cout<<getPtr->x;
return 0;
}
没有理由在此处返回void*
。
如果您确实想通过void*
访问它们,则可以强制转换结果:
cout << static_cast<DETECTOR*>(getDetector())->x;
但这被认为是不好的坏习惯。请不要这样做,除非您的讲师被枪口抓住。
另外,它是<iostream>
,而不是<iostream.h>
,这是2019年。
答案 1 :(得分:1)
假设DetectorObj
的类型为DETECTOR
,并且有一个实例:
int main()
{
DETECTOR* getPtr = (DETECTOR*)getDetector();
cout<<getPtr->x;
return 0;
}