2013-05-11 74 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){