我在遇到以下代码时出现语法错误。我试图将一个指针数组传递给一个方法,并在最后返回它。为什么这不起作用?尝试将指向数组的指针传递给方法并将其返回
struct N {
static inline int*[] eval(int*[] p){
return p;
};
};
为什么我不能用这个来返回或使用这种类型?
谢谢
我在遇到以下代码时出现语法错误。我试图将一个指针数组传递给一个方法,并在最后返回它。为什么这不起作用?尝试将指向数组的指针传递给方法并将其返回
struct N {
static inline int*[] eval(int*[] p){
return p;
};
};
为什么我不能用这个来返回或使用这种类型?
谢谢
您不能从函数返回数组。指针语法可以使用但是:
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;
}
IIRC'int * []'也是一个不完整的类型。 – dyp 2013-05-11 21:57:39
谢谢你亲切的先生:) – Martinos 2013-05-11 21:59:26
@Martinos没问题。 :) – 0x499602D2 2013-05-11 22:01:02
记住,数组只是一个指针(或多或少)。 因此,你想传递和返回一个指针的指针,这将改变从语法:
static inline int*[] eval(int*[] p){
到
static inline int** eval(int** p){
我宁愿这个标签下比C++ – 2013-05-11 21:56:56
@CsabaToth随着函数内的结构? – dyp 2013-05-11 21:58:12
为什么? (即时在C + +的第一个计时器) – Martinos 2013-05-11 21:59:56