c++ - 如何从返回 vector 的函数中获取 vector 值?

标签 c++ function vector return std

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

call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type

它用红色标记函数调用,它返回一个 vector 。这是代码:

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;
}
}

具体看一下函数“shag”的调用。

最佳答案

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

局部变量 shag 与函数同名。

关于c++ - 如何从返回 vector 的函数中获取 vector 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771538/

相关文章:

c++ - 如何从私有(private)字符串中检索数据

c++ - 在无效的 Syskeypress 上禁用 MessageBeep

c++ - 在没有 Xcode 的情况下在 Mac OS X 上构建 VST 插件

c++ - 使用 SSL_read() 时如何知道何时没有从服务器接收的进一步响应

javascript - 创建一个对象,然后使用函数来显示对象的内容

c++ - 从二维 vector 中分解出一个 vector

c++ - 调整 vector 大小后,为什么我不能增加 vector

sql-server - SQL Server 中函数的列名

javascript - 如何在连续单击时切换不同的颜色(在 SVG 对象上)

c++ - copy_if 与保存序列和使用复制