尝试将指针数组传递给方法并返回它

时间:2013-05-11 21:53:14

标签: c++ pointers

我遇到以下代码时出现问题,导致语法错误。我试图将一个指针数组传递给一个方法,并在最后返回它。为什么这不起作用?

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

为什么我不能用它来返回或使用这种类型?

谢谢

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

请记住,数组只是一个指针(或多或少)。 因此,您希望传递并返回指向指针的指针,该指针将更改语法:

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

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