通过来自 main() C++ 的多个函数传递指针

passing pointers through multiple functions from main() C++

这不是很有效。让我们看看我们是否可以共同扩展我们在这方面的知识。好的:

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 的赋值下遇到了一些错误。我怎样才能更好地做到这一点?谢谢

具体错误是"No operator '=' matches these operands".

使用引用而不是指针:

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

functionOne.

也一样

你的错误是 aVectorOfPoints[i] 通过 i 索引指针。如果使用指针,您需要先取消引用指针,方法是编写 (*aVectorOfPoints)[i][j].

为什么这是错误的?

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