通过来自 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();
}
这不是很有效。让我们看看我们是否可以共同扩展我们在这方面的知识。好的:
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();
}