我在遇到以下代碼時出現語法錯誤。我試圖將一個指針數組傳遞給一個方法,並在最後返回它。爲什麼這不起作用?嘗試將指向數組的指針傳遞給方法並將其返回
struct N {
static inline int*[] eval(int*[] p){
return p;
};
};
爲什麼我不能用這個來返回或使用這種類型?
謝謝
我在遇到以下代碼時出現語法錯誤。我試圖將一個指針數組傳遞給一個方法,並在最後返回它。爲什麼這不起作用?嘗試將指向數組的指針傳遞給方法並將其返回
struct N {
static inline int*[] eval(int*[] p){
return p;
};
};
爲什麼我不能用這個來返回或使用這種類型?
謝謝
您不能從函數返回數組。指針語法可以使用但是:
static inline int** eval(...)
此外,p
是在簽名錯了地方。它應該放置在*
之後和[]
之前。
static inline int** eval(int* p[])
{
return p;
};
可是爲什麼去這一切的麻煩時,你可以簡單地使用unique_ptr
矢量:
std::vector<std::unique_ptr<int>> eval(std::vector<std::unique_ptr<int>> const& p)
{
return p;
}
IIRC'int * []'也是一個不完整的類型。 – dyp 2013-05-11 21:57:39
謝謝你親切的先生:) – Martinos 2013-05-11 21:59:26
@Martinos沒問題。 :) – 0x499602D2 2013-05-11 22:01:02
記住,數組只是一個指針(或多或少)。 因此,你想傳遞和返回一個指針的指針,這將改變從語法:
static inline int*[] eval(int*[] p){
到
static inline int** eval(int** p){
我寧願這個標籤下比C++ – 2013-05-11 21:56:56
@CsabaToth隨着函數內的結構? – dyp 2013-05-11 21:58:12
爲什麼? (即時在C + +的第一個計時器) – Martinos 2013-05-11 21:59:56