C++ 为什么这个程序告诉我传递了无效的参数?
老实说,我甚至不知道我现在想做什么。但在这个函数开始工作之前,我不能再进一步了,它每次都抛出那个异常,出了什么问题?异常为“CS 330 19S,P1,Calvert,Program 1.exe中0x0F61CAB6(ucrtbased.dll)处未处理的异常:向认为无效参数致命的函数传递了无效参数”C++ 为什么这个程序告诉我传递了无效的参数?,c++,parameter-passing,2d-vector,C++,Parameter Passing,2d Vector,老实说,我甚至不知道我现在想做什么。但在这个函数开始工作之前,我不能再进一步了,它每次都抛出那个异常,出了什么问题?异常为“CS 330 19S,P1,Calvert,Program 1.exe中0x0F61CAB6(ucrtbased.dll)处未处理的异常:向认为无效参数致命的函数传递了无效参数” #包括 #包括 #包括 使用名称空间std; 结构运动学{ 矢量位置; 浮动方向; 矢量速度; 浮动旋转; }; StreeringOutput结构{ 向量线性; 浮动角度; }; 无效更新(St
#包括
#包括
#包括
使用名称空间std;
结构运动学{
矢量位置;
浮动方向;
矢量速度;
浮动旋转;
};
StreeringOutput结构{
向量线性;
浮动角度;
};
无效更新(StreeringOutput转向、浮动时间、运动学k)
{
对于(int i=0;i<100;i++)
{
对于(int j=0;j<100;j++)
{
k、 位置[i][j]+=k.速度[i][j]*时间+
0.5*转向。线性[i][j]*时间*时间;
//上面的命令就是它抛出异常的地方
k、 速度[i][j]+=转向。线性[i][j]*时间;
}
}
k、 方向+=k.旋转*时间+0.5*转向角度*时间*时间;
k、 旋转=转向角度*时间;
}
int main()
{
智力测验;
运动亲属;
应力输出转向;
浮动时间=0.0;
出流孔的直径;
outfile.open(“Output.txt”);
对于(int i=0;i<100;i++)
{
更新(转向、时间、亲属);
时间+=0.5;
}
cin>>试验;
返回0;
}
程序启动时,您将创建以下对象:
Kinematic kin;
StreeringOutput steering;
这称为默认初始化,即所有成员都初始化为默认值。对于向量
,它是空状态
但是update
会做以下事情:
// i and j can be as large as 99
k.position[i][j]
k.velocity[i][j]
steering.linear[i][j]
但是位置
等都是空的<代码>矢量s无法自动增长以满足您的需要。您正在编制越界的索引,这是未定义的行为
应正确初始化向量,以确保实际有100个元素:
Kinematic kin;
kin.position.assign(100, vector<float>(100));
// same for others
kin;
亲属位置分配(100,向量(100));
//其他人也一样
Post a请按要求在此处复制问题。您似乎从未在向量中分配过空间,因此对其进行索引是非法操作。使用调试器进行调查。改为使用steering.at(i).at(j)
,然后修复异常。可能实际代码已经简化,但更新by valuek
参数是无用的。
Kinematic kin;
kin.position.assign(100, vector<float>(100));
// same for others