2013-05-11 95 views
1

我在遇到以下代碼時出現語法錯誤。我試圖將一個指針數組傳遞給一個方法,並在最後返回它。爲什麼這不起作用?嘗試將指向數組的指針傳遞給方法並將其返回

struct N { 
    static inline int*[] eval(int*[] p){ 
     return p; 
    }; 
}; 

爲什麼我不能用這個來返回或使用這種類型?

謝謝

+0

我寧願這個標籤下比C++ – 2013-05-11 21:56:56

+0

@CsabaToth隨着函數內的結構? – dyp 2013-05-11 21:58:12

+0

爲什麼? (即時在C + +的第一個計時器) – Martinos 2013-05-11 21:59:56

回答

5

您不能從函數返回數組。指針語法可以使用但是:

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; 
} 
+0

IIRC'int * []'也是一個不完整的類型。 – dyp 2013-05-11 21:57:39

+0

謝謝你親切的先生:) – Martinos 2013-05-11 21:59:26

+0

@Martinos沒問題。 :) – 0x499602D2 2013-05-11 22:01:02

1

記住,數組只是一個指針(或多或少)。 因此,你想傳遞和返回一個指針的指針,這將改變從語法:

static inline int*[] eval(int*[] p){ 

static inline int** eval(int** p){ 
相關問題