使用对象 C++ 创建二维矢量
create 2-d vector using objects c++
>我正在尝试使用类 A 中的对象创建 2-D 向量,但出现以下错误。
error: no matching function for call 'std::vector<A>::push_back(A*)'
我正在使用下面的代码来创建我的向量。我使用了类似的代码来创建布尔值的 2-D 向量,只需在下面的代码中将"A"更改为"bool"。我不知道为什么这不起作用。
不工作代码
std::vector<std::vector<A> > board;
for(int i=0;i<rows;i++)
{
board.push_back(vector<A>()); //insert rows
}
for(int i=0;i<rows;i++)
{
for(int j=0;j<cols;j++)
{
board[i].push_back(new A(i,j)); //insert cols and value
}
}
工作代码
vector<vector<bool> > board;
for(int i=0;i<rows;i++)
{
board.push_back(vector<bool>());
}
for(int i=0;i<rows;i++)
{
for(int j=0;j<cols;j++)
{
board[i].push_back(false);
}
}
board[i].push_back(new A(i,j)); // new A(..) returns A *
应该成为
board[i].push_back(A(i,j)); // A(..) return A
你写道:
board[i].push_back(new A(i,j));
new A(i,j)
类型为 A*
的值(指向 A
的指针)。 相反,您应该推送类型为 A
的值。 这就是你应该写的:
board[i].push_back(A(i,j));
您收到的错误消息说明了您需要了解的所有内容
错误:调用"std::vector::p ush_back(A*)"没有匹配函数
编译器找不到用于将指向A
对象的指针插入std::vector
的函数调用。
用线:
board[i].push_back(new A(i,j));
您正在尝试将指针推送到std::vector
。将数据结构更改为
std::vector<std::vector<A*>> board;
(请记住事后释放内存并更改初始化)
或者将方法调用更改为
board[i].push_back(A(i,j));
相关文章:
- 可容纳二维对象数组的变量
- 根据类中另一个对象 C++ 的值对类中的二维对象进行排序并赋予值
- 类对象初始化的二维向量
- 使用什么数据结构来存储基于游戏对象的二维单元地图?
- 制作二维对象数组
- 如何在中心旋转二维对象
- 填充对象的C++二维数组
- 使用对象 C++ 创建二维矢量
- C++对象或二维数组作为参数
- 用C++将列表转换为对象的二维数组
- 二维数组和分配对象
- C++ 中的对象的二维数组
- 正确分配和取消分配指向对象的指针的二维数组
- 对象的二维几何布局
- 旋转使用OpenGL绘制的二维对象
- 将二维对象数组的指针传递给方法
- 从对象打印二维矢量时出错
- 如何定期缩放二维对象
- 是二维动态对象 O(n^2) 碰撞的最快算法
- 在 c++ 中声明和初始化(大型)二维对象数组的正确方法是什么?