这是我的代码。
这是我得到的错误。
Buffer Overflow - Array Index Out of Bounds (Critical)
> - Code: ABV.MEMBER --> i_rgb_to_xyz()
> - Message: Array '&(xyz.x)' of size 1 may use index value(s) 2.
// Go through all input rgb's and push result to output vector
for (auto pt : rgb)
{
point_xyz xyz;
matrix_mul3x1(M, &pt.r, &(xyz.x)); //this line is the error line
output.push_back(xyz);
}
void matrix_mul3x1(const double* A, const double* B, double* C)
{
C[0] = A[0] * B[0] + A[1] * B[1] + A[2] * B[2];
C[1] = A[3] * B[0] + A[4] * B[1] + A[5] * B[2];
C[2] = A[6] * B[0] + A[7] * B[1] + A[8] * B[2];
}
这是rgb的定义
const vector<point_rgb>& rgb
这是point_rgb的定义
typedef struct
{
double r;
double g;
double b;
} point_rgb;
这是point_xyz的定义
typedef struct
{
double x;
double y;
double z;
} point_xyz;
有人可以建议如何解决此问题吗? 我不太了解这个发条错误。
答案 0 :(得分:1)
您需要更改frame.setLayout(new GridBagLayout());
的正文:
matrix_mul3x1
您无法访问将其视为数组的结构的成员。
根据您的情况,您也可以使用tuple代替struct。
void matrix_mul3x1(const point_xyz* A, const point_rgb* B, double* C)
{
C[0] = A->x * B->r + A->y * B->g + A->z * B->b;
// ....
}