C++ 如何从返回向量的函数中获取向量值?

C++ 如何从返回向量的函数中获取向量值?,c++,function,vector,return,std,C++,Function,Vector,Return,Std,我在VS 2015中编译程序时出错: 在没有适当运算符()或转换函数的情况下调用类类型的对象以指向函数类型的指针 它用红色标记对函数的调用,函数返回一个向量。代码如下: struct punct { int x, y, val; }; int koli4estvoShagov = 0; int arr[100][100]; int n, m; vector<punct> shag(int x, int y, int nrShaga) { punct shag; shag.val

我在VS 2015中编译程序时出错:

在没有适当运算符()或转换函数的情况下调用类类型的对象以指向函数类型的指针

它用红色标记对函数的调用,函数返回一个向量。代码如下:

struct punct {
int x, y, val;
};

int koli4estvoShagov = 0;
int arr[100][100];
int n, m;

vector<punct> shag(int x, int y, int nrShaga) {
punct shag;
shag.val = arr[x][y];
shag.x = x;
shag.y = y;
vector<punct> shagi;
shagi.push_back(shag);

if (nrShaga == koli4estvoShagov - 1) {
    return shagi;
}
else if (x == m - 1) {
    vector<punct> shagVNiz = shag(x, y + 1, nrShaga + 1);
    shagi.insert(shagi.end(), shagVNiz.begin(), shagVNiz.end());
    return shagi;
}
else if (y == n - 1) {
    vector<punct> shagVPravo = shag(x + 1, y, nrShaga + 1);
    shagi.insert(shagi.end(), shagVPravo.begin(), shagVPravo.end());
    return shagi;
}
else {
    vector<punct> shagVPravo = shag(x + 1, y, nrShaga + 1);
    vector<punct> shagVNiz = shag(x, y + 1, nrShaga + 1);
    vector<punct> max;
    if (sum(shagVNiz) > sum(shagVPravo))
        max = shagVNiz;
    else
        max = shagVPravo;

    shagi.insert(shagi.end(), max.begin(), max.end());
    return shagi;
}
}
结构点{
int x,y,val;
};
int koli4estvoShagov=0;
国际航空公司[100][100];
int n,m;
向量shag(整数x,整数y,整数nrShaga){
尖刺;
shag.val=arr[x][y];
shag.x=x;
shag.y=y;
矢量沙吉;
沙吉。推回(沙格);
如果(nrShaga==koli4estvoShagov-1){
返回沙吉;
}
else如果(x==m-1){
向量shagVNiz=shag(x,y+1,nrShaga+1);
insert(shagi.end(),shagVNiz.begin(),shagVNiz.end());
返回沙吉;
}
else如果(y==n-1){
向量shagVPravo=shag(x+1,y,nrShaga+1);
insert(shagi.end(),shagVPravo.begin(),shagVPravo.end());
返回沙吉;
}
否则{
向量shagVPravo=shag(x+1,y,nrShaga+1);
向量shagVNiz=shag(x,y+1,nrShaga+1);
向量最大值;
如果(总和(沙格夫尼兹)>总和(沙格夫普拉沃))
max=shagVNiz;
其他的
max=shagVPravo;
insert(shagi.end(),max.begin(),max.end());
返回沙吉;
}
}
具体看一下对函数“shag”的调用。

vectorshag(intx,inty,intnrshaga){
尖刺;
局部变量shag与函数同名。

向量shag(int x,int y,int nrShaga){
尖刺;
局部变量
shag
与函数同名

vector<punct> shag(int x, int y, int nrShaga) {
punct shag;