-1

我试图在另一个名为 display 的 .h 文件中调用一个函数,该文件接收 a 的指针,std::vector<vector<double> >但是当我尝试调用它时,我得到错误未在此范围内声明变量。这是代码示例,希望对您有所帮助。

//proper includes above
#include <vector>
#include "display.h"
#include "extract_balls.h"

int main(void)   
{
    std::vector<vector<double> > balls_centroids;
    std::vector<vector<double> > balls_centroids_computed;

    balls_centroids = extract_balls();

    for (vector< vector<double> >::size_type u = 0; u < balls_centroids.size(); u++) {
        vector<double> x = balls_centroids.at(u);
        x[0] = farest_point[0]-x[0];
        x[1] = farest_point[1]-x[1];
        x[2] = farest_point[2]-x[2];
        balls_centroids_computed.push_back(x);
    }

    display(&balls_centroid_computed);
}

display.h 文件是这样的:

#include <vector>

void display(std::vector<std::vector<double> >& coord){

           //do stuff
}
4

3 回答 3

5

您声明:

std::vector<vector<double> > balls_centroids_computed;

但你试着打电话

display(&balls_centroid_computed);

_centroid_注意单数和复数的区别_centroids_...

于 2013-01-03T18:46:12.270 回答
1

我正在尝试调用display()接收指针 [...] 的 [...]

根据原型,display()接受引用而不是指针。

因此,您不需要在

    display(balls_centroid_computed);
于 2013-01-03T18:37:28.517 回答
0

正如您所说, display() 函数实际上并没有收到指针。

如果您希望它接收指针,请将其声明为:

void display(std::vector<std::vector<double> > * coord){

       //do stuff

}

与号表示您正在传递“参考”。建议你只改变

display (balls_centroid_computed)

由于函数被声明为引用,您仍然可以获得传递指针的大部分好处(避免将整个结构放入堆栈)。

于 2013-01-03T18:49:15.513 回答