嗨我是編程新手,我正在進入第二學期,所以請耐心等待我的問題,因爲它不是一個任務我只是想看看有些事情工作。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])
我已經看了看這裏的其他例子,我也知道的事實,這可能返回所謂的「腐朽陣」,以及其他的東西,如可能出現的壞編碼技術等
但是,如果我有這個權利,讓我知道。如果沒有,讓我知道你的想法。
謝謝
看起來非常好,它看起來應該可以工作,但現在編譯器說,對於返回成員,Error:返回值類型與函數類型不匹配。當我早些時候嘗試其他一些事情時,我也看到了這個錯誤。 – user2426847
如果我在typedef和char之間添加const,它會再次緩解這個問題,但這真的是正確的代碼嗎? – user2426847
你剛剛返回沒有類型轉換的數組嗎?嘗試'typedef char const(* array_t)[10]'而不是。 'array'的類型是'char [10] [10]',當它用作指針時,它是'char const(*)[10]',而'array_t'不包含'const'限定符。 – aLeX