2013-05-28 38 views
1

嗨我是編程新手,我正在進入第二學期,所以請耐心等待我的問題,因爲它不是一個任務我只是想看看有些事情工作。C++使用類方法返回2d數組

我有一個我製作的程序,我想演示如何從Class方法返回二維數組。我正在閱讀我的課本,並說「get」方法使它們成爲const,這樣程序員就不會無意中對私有變量進行更改。

好了,所以有了這樣的方式,這是我想出了方法的[10] [10] 2維字符數組:

//private member is: 
private: 
     char array[10][10]; 

//method prototype 
public: 
     const char(* getArray()const)[10]; 

//and then the actual method itself 
const char(* getArray()const)[10] 
{ 
     return array; 
} 

這工作,但我想知道如果這是正確的代碼(我相信這不是因爲它迫使我在char *之前放置const的事實,而我在網上找到的get方法中的const用法的所有示例都只在const的末尾有線),爲什麼它工作呢?我試着做char(* getArray1())[10] const;但這不起作用,編譯器抱怨它期望在const之前有這樣的方式,但這不是我想要做的。

我也知道,如果這是一維數組,它只是簡單地:

char* getArray() const; 

,因爲我測試了它和它的作品。我看到另一個網頁,說明如何使用一維數組代替二維數組,所以我已經意識到了這一點,但是基本上會形成一個新的數組100(數組[100],基本上是數組[10 * 10])

我已經看了看這裏的其他例子,我也知道的事實,這可能返回所謂的「腐朽陣」,以及其他的東西,如可能出現的壞編碼技術等

但是,如果我有這個權利,讓我知道。如果沒有,讓我知道你的想法。

謝謝

回答

0

嘗試typedef char const (*array_t)[10]; array_t getArray() const

+0

看起來非常好,它看起來應該可以工作,但現在編譯器說,對於返回成員,Error:返回值類型與函數類型不匹配。當我早些時候嘗試其他一些事情時,我也看到了這個錯誤。 – user2426847

+0

如果我在typedef和char之間添加const,它會再次緩解這個問題,但這真的是正確的代碼嗎? – user2426847

+0

你剛剛返回沒有類型轉換的數組嗎?嘗試'typedef char const(* array_t)[10]'而不是。 'array'的類型是'char [10] [10]',當它用作指針時,它是'char const(*)[10]',而'array_t'不包含'const'限定符。 – aLeX