我正在尝试在名为display的另一个.h文件中调用一个函数来接收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
}
答案 0 :(得分:5)
你声明:
std::vector<vector<double> > balls_centroids_computed;
但你试着打电话
display(&balls_centroid_computed);
请注意单数_centroid_
和复数_centroids_
...
答案 1 :(得分:1)
我正在尝试调用[...]
display()
接收指针[...]
根据原型,display()
采用引用而不是指针。
因此,您不需要
中的&符号 display(balls_centroid_computed);
答案 2 :(得分:0)
当你陈述时,display()函数实际上并没有收到指针。
如果您希望它接收指针,请将其声明为:
void display(std::vector<std::vector<double> > * coord){
//do stuff
}
&符号表示您正在传递“参考”。建议你只改变
display (balls_centroid_computed)
由于函数被声明为引用,您仍将获得传递指针的大部分好处(避免将整个结构放入堆栈)。