需要从函数返回对象数组的地址。 并在main中捕获对象数组的地址。并访问每个对象的数据主干。
#include <iostream>
void* getDetector();
class DETECTOR
{
public:
int x;
int y;
DETECTOR();
~DETECTOR();
void Detect();
};
DETECTOR* getDetector()
{
// Need to return address of object array.
return &DetectorObj;
}
void DETECTOR::Detect()
{
x = 100;
y = 200;
}
DETECTOR::DETECTOR(){
x=0;
y=0;
}
DETECTOR::~DETECTOR(){}
DETECTOR Detector[3];
int main()
{
// need catch here address of object array.
DETECTOR * getDetectorPtr = getDetector();
// need to access value of object array.
// for e.g.
// getDetectorPtr[1]->Detect();
// std::cout<<getDetectorPtr[1]->x;
// std::cout<<getDetectorPtr[1]->y;
return 0;
}
以上给出的代码用于返回单个对象的地址。但是需要从函数返回对象数组的地址。 并在main中捕获对象数组的地址。并在主目录中访问每个对象的数据。
答案 0 :(得分:2)
你是这个意思吗?
DETECTOR* getDetector();
DETECTOR Detector[3];
DETECTOR* getDetector()
{
return Detector;
}
您的版本无法正常运行的原因可能是您对Detector
数组的定义是之后,而在getDectector
函数的定义之后,它必须是另一个
但是编写函数以返回全局数组的地址有什么意义呢?为什么不仅仅使用全局本身呢?
无论哪种情况,这都是错误的
getDetectorPtr[1]->Detect();
应该是
getDetectorPtr[1].Detect();
因为getDetectorPtr[1]
不是Detector
的指针(严格来说是对检测器的引用)。
就像我上面说的,为什么不只使用全局呢?
Detector[1].Detect();
我想这是您的真实错误,应该将->
放在.
中。换句话说,您对指针和数组感到困惑(非常常见的新手问题)。