这还不是很有效。让我们看看我们是否可以集体扩展我们对此的知识。好:
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;。
答案 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();
}