1

我在使用以下代码时遇到了问题,它给出了语法错误。我正在尝试将一组指针传递给一个方法并在最后简单地返回它。为什么这不起作用?

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

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

谢谢

4

2 回答 2

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;
}
于 2013-05-11T21:56:03.167 回答
1

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

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

static inline int** eval(int** p){
于 2013-05-11T21:58:35.537 回答