【发布时间】:2012-08-18 17:22:46
【问题描述】:
我是一名初级程序员,在使用 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...
谁能帮助我更好地理解这一点?
【问题讨论】:
-
幻灯片类中的错误 - 检查大括号。
标签: c++ arrays oop pointers return