尝试在网格矩形中创建点列表时出错(初学者)
Errors while trying to create list of points in a grid rectangle (beginner)
我是C++的初学者,我正在尝试为网格矩形创建一个Rect
类,它是使用两个向量创建的:start
点(左上角(和dimensions
。我想为Rect
创建一个名为get_points()
的方法,它返回矩形内所有网格点的向量。
以下是我迄今为止所写的内容:
#include <cstdlib> //I will be using random numbers later
#include <vector>
class Rect {
private:
int* start, dimensions;
int area;
public:
Rect(int[], int[]);
~Rect();
std::vector <int> get_points(){
std::vector <int> points(0);
for (int i=0; i<area; i++) {
int point[2] = {start[0]+i%*dimensions[0], start[1]+i/ *dimensions[0]};
points.push_back(point);
}
return points;
}
};
Rect::Rect(int* start, int* dimensions){
this -> start = start;
this -> dimensions = dimensions;
this -> area = dimensions[0] * dimensions[1];
}
Rect::~Rect(){}
我收到以下错误:
||In member function 'std::vector<int> Rect::get_points()':|
|14|error: invalid types 'int[int]' for array subscript|
|14|error: invalid types 'int[int]' for array subscript|
|15|error: invalid conversion from 'int*' to 'std::vector<int>::value_type {aka int}' [-fpermissive]|
c:program files (x86)codeblocksmingwbin..libgccmingw324.7.1includec++bitsstl_vector. h|881|error: initializing argument 1 of 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; std::vector<_Tp, _Alloc>::value_type = int]' [- fpermissive]|
||In constructor 'Rect::Rect(int*, int*)':|
|25|error: invalid conversion from 'int*' to 'int' [-fpermissive]|
在所有这些中,我最想知道是什么导致了invalid types 'int[int]' for array subscript
错误。
第一个答案是一个问题,但另一个问题是你有额外的
*
在第14行的尺寸前面。即使标注声明正确,它也没有意义。在按照上面的规定修复声明之后,您还需要删除那些额外的星号。
int* start, dimensions;
不声明2个指针-它是一个指针和1个int。
你想做的事:
int *start, *dimensions;
你需要为每个变量加一颗星。在这种情况下,我更喜欢将恒星放在变量的一侧,而不是类型,以明确这种情况。
此外,您不能在int 的向量中推送int数组
points.push_back(point);
最后,
i%*dimensions[0]
不应具有*
。也不应该
i/ *dimensions[0]
更改这些内容应该可以修复您的错误
您没有使用Vectors作为开始和维度,而是使用指向int的指针。请注意,int数组不可分配给Vector,正如您尝试使用push_back((所做的那样。Vector的赋值运算符仅适用于Vector和initializer_list。
为什么不只对x、y、宽度和高度成员使用int呢?您的代码变得简单多了,如果您需要将它们作为Vector返回给某个调用程序,那么您可以在那时构造Vector。或者,如果需要返回这些向量数千次,可以在Rect构造函数中构造它们。
相关文章:
- 读取文件的最后一行并输入到链接列表时出错
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 基于数组的列表 - 动态数组创建时出错
- 编译包含指向模板函数的指针的初始值设定项列表时,gcc 出错,但 clang 不出错
- 方法的参数列表出错
- 使用 C++ 的迭代目录列表出错
- 尝试访问列表时出错
- 使用列表 STL 时出错
- C2057构造函数初始化列表中的常量值定义出错
- 使用变量参数列表为传递的引用赋值(VS2010中出错)
- 创建模板树节点列表时出错
- 通过函数后从列表中删除项目时出错
- 链接列表的Push_back函数出错
- 泛型列表节点类中出错
- C++实现邻接列表时出错
- 运行列表的实现时出错
- 使用链接列表"Stop working"的 c++ 代码中出错
- g++4.8.2上列表方法参数默认初始化时出错
- 将大括号括起来的初始值设定项列表转换为类型时出错的含义
- 指针列表出错