从main()C ++传递多个函数的指针

时间:2015-08-05 04:48:10

标签: c++ pointers constructor main

这还不是很有效。让我们看看我们是否可以集体扩展我们对此的知识。好:

vector<vector<Point>> aVectorOfPoints
int main(){
    someConstructor(&aVectorOfPoints)
}

someConstructor(vector<vector<Point>>* aVectorOfPoints){
    functionOne(aVectorOfPOints);
}

functionOne(vector<vector<Point>>* aVectorOfPOints){
    aVectorOfPoints[i][j] = getPointFromClass();
}
//functionX(...){...}

我在functionOne中的任务下面遇到了一些错误。我怎么能更好地做到这一点?感谢。

具体错误是&#34;没有操作员&#39; =&#39;匹配这些操作数&#34;。

2 个答案:

答案 0 :(得分:1)

使用引用而不是指针:

someConstructor( vector<vector<Point>> &aVectorOfPoints) {

functionOne相同。

您的错误是aVectorOfPoints[i]将指针编入i。如果使用指针,则需要首先取消引用指针,然后再写(*aVectorOfPoints)[i][j]

答案 1 :(得分:1)

为什么这是错的?

aVectorOfPoints[i][j] = getPointFromClass();

aVectorOfPoints的类型为vector<vector<Point>>* aVectorOfPoints[i]的类型为vector<vector<Point>> aVectorOfPoints[i][j]的类型为vector<Point>

无法将Point分配给vector<Point>。因此编译错误。

也许您打算使用:

(*aVectorOfPoints)[i][j] = getPointFromClass();

您可以通过传递参考来简化代码。

int main(){
    someConstructor(aVectorOfPoints)
}

someConstructor(vector<vector<Point>>& aVectorOfPoints){
    functionOne(aVectorOfPOints);
}

functionOne(vector<vector<Point>>& aVectorOfPOints){
    aVectorOfPoints[i][j] = getPointFromClass();
}