我是一个初级程序员,我在 C++ OOP 方面遇到了很多麻烦。具体来说,今晚我试图编写一个简单的类,它接收事件并在多个图像之间切换,并带有一个指向存储在数组中的每个图像的指针。在尝试创建一个返回指向数组本身的指针的“getter”函数时,我遇到了一个令人困惑的问题。
基本上,我试图做这样的事情:
class SlideShow
{
public:
image *getSlideArray();
private:
image *slideArray[10];
};
所以,我想要一个数组来存储指向每个图像的指针。而且我还想要一个函数来返回数组本身的地址。我在尝试定义 getSlideArray() 函数时遇到了一个问题……我只是不完全确定它为什么不起作用……
这是我最初在课堂源文件中尝试的内容:
image *SlideShow::getSlideArray()
{
return this->slideArray;
}
在这次尝试中,编译器不断提出使用“this”关键字的问题,说我试图返回的不是先前指定的类型。但是,到目前为止,这是我编写 getter 函数的方式,它通常在使用简单变量时有效……我怀疑这里存在一些问题,因为“this”是一个指针, 和 'slideArray' 是指向一个数组的指针,该数组也包含指针......但我很糟糕,这种引用级别现在让我头疼。我花了一段时间才收集对指针的基本理解,使用地址和运算符引用等。指向指针和指针数组的指针更加令人困惑。
我还应该提到,我找到了一种解决方法,我的代码可以在其中编译。(虽然我不能真正运行它来检查它是否在运行时工作..)我的工作涉及将定义/返回语句添加到类声明本身(在头文件中):
class SlideShow
{
public:
image *getSlideArray() {return *slideArray;);
private:
image *slideArray[10];
};
现在。这编译正确......但是,这也让我感到困惑。我知道,通常,当您返回一个数组(例如,一个整数数组)时,您将返回数组的第零个插槽的地址。但是,如果我试图返回一个 intArray[5],那么在返回它时,我会简单地写 'intArray',对吗?本质上,我对为什么在这种情况下必须在“slideArray”之前添加 * 感到困惑......
因此,无论我尝试哪种方式,它都让我感到困惑。我知道这里有一些“技巧”,它可能与返回指向指针的指针或其他东西有关,但我自己无法解决。我真的很希望学习这个主题,这样我就可以开始掌握编程,尤其是 OOP ......
谁能帮助我更好地理解这一点?