我是一個開始的程序員,我一直在C++ OOP方面遇到了一些麻煩。具體來說,今天晚上,我試圖編寫一個簡單的類,它接受事件並在多個圖像之間切換,並指向存儲在數組中的每個圖像。當嘗試創建一個返回指向數組本身的指針的getter函數時,我遇到了一個令人困惑的問題。返回指針數組?
基本上,我試圖做這樣的事情:
class SlideShow
{
public:
image *getSlideArray();
private:
image *slideArray[10];
};
所以,我想有存儲指向每個圖像陣列。我也想有一個函數返回數組本身的地址。我試圖定義getSlideArray()函數時遇到了一個問題...我只是不完全確定它爲什麼不能正常工作...
這是我最初嘗試的,在我的類的源文件中:
image *SlideShow::getSlideArray()
{
return this->slideArray;
}
在這種嘗試中,編譯器不停地提出問題與使用「這個」關鍵字,說什麼我試圖返回並不是先前指定的類型。不過,這是我迄今爲止一直在編寫我的getter函數的方式,它通常在使用簡單變量時起作用......我懷疑這裏存在一些問題,因爲「this」是一個指針,'slideArray'是一個指向一個數組的指針,它也包含指針......但是我很糟糕,而且現在這種引用的水平超過了我的頭。我花了一段時間才收集對指針的基本理解,使用地址&運算符等進行引用。指向指針和指針數組的指針更令人困惑。
我還應該提到,我找到了一種解決方法,我的代碼在其中編譯。 (雖然我不能真正運行它來檢查,看看它是否工作在運行時尚未..)我的工作圍繞涉及添加定義/ return語句類的聲明本身(頭文件內):
class SlideShow
{
public:
image *getSlideArray() {return *slideArray;);
private:
image *slideArray[10];
};
現在。這個編譯正確...但是,這也讓我感到困惑。我知道,一般來說,當你返回一個數組(比如一個int數組)時,你返回數組中第零個槽的地址。但是如果我試圖返回一個intArray [5],當它返回時,我會直接寫'intArray',對嗎?從本質上講,我並不困惑爲什麼我必須在這種情況下添加*之前的'slideArray'...
所以不管我用哪種方式嘗試做,它都讓我感到困惑。我知道這裏有一些'技巧',它可能與返回指向指針或指針的指針有關,但是我只是無法自己完成。我真的很希望學習這個主題,以便我可以開始掌握編程,特別是OOP ...
任何人都可以幫助我更好地理解這一點嗎?
類幻燈片錯誤 - 檢查大括號。 – Abhineet
請嘗試http://www.cplusplus.com/doc/tutorial/pointers/和http://www.cplusplus.com/forum/beginner/6644/ – Abhineet