如何访问对象引用对void指针返回的值?

时间:2019-07-15 13:47:06

标签: c++

我正在尝试访问在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;
}

2 个答案:

答案 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;
}