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 に答える