变量因未知原因而更改
Variable changing for unknown reason
我有一个接一个地调用这两个方法;
m_Fence.Initialise(7);
m_Fence.CreateSquareFence();
这是他们的每个细节;
void CFence::Initialise(int size)
{
m_square_size = size;
}
void CFence::CreateSquareFence()
{
int l_Vector_Pos = 0;
//Set initial vector at origin and start of first fence
CVector3f l_Fence_Position = CVector3f(0.0f,0.0f,0.0f);
int l_side = 0; // Makes sure only 4 sides get created
std::string bools[4] = {"plus_z", "plus_x", "minus_z", "minus_x"};
//Draw 1st fence on 0 x-axis
while(l_side < 4)
{
for(int i=0 ; i<=m_square_size ; i++)
{
//Find which direction it's going and set Fence position and add to vector
if(bools[l_side] == "plus_z" && i>0)
l_Fence_Position += CVector3f(0.0,0.0,beamLength);
else if(bools[l_side] == "plus_x" && i>0)
l_Fence_Position += CVector3f(beamLength,0.0,0.0);
else if(bools[l_side] == "minus_z" && i>0)
l_Fence_Position += CVector3f(0.0,0.0,-beamLength);
else if(bools[l_side] == "minus_x" && i>0)
l_Fence_Position += CVector3f(-beamLength,0.0,0.0);
fences[l_Vector_Pos].setPosition(l_Fence_Position);
l_Vector_Pos++;
//Increase this int to let it know what side we're creating
if(i == m_square_size)
{
l_side++;
}
}
}
}
我传递 7,它最初将 m_square_size
变量更改为 7,但当我调用 CreateSquareFence
方法时,它最终变为 0,我很难理解为什么。
将我的评论变成答案
确保fences
足够大,这样你就不会越界并胜过相邻的助记符(更一般地说,调用未定义的行为)。
附带说明一下,该代码似乎太复杂了。你可以这样简化它:
void CFence::CreateSquareFence()
{
int l_Vector_Pos = 0;
//Set initial vector at origin and start of first fence
CVector3f l_Fence_Position = CVector3f(0.0f, 0.0f, 0.0f);
CVector3f offsets[4] = {
CVector3f(0.0, 0.0, beamLength),
CVector3f(beamLength, 0.0, 0.0),
CVector3f(0.0, 0.0, -beamLength),
CVector3f(-beamLength, 0.0, 0.0)
};
for (int l_side = 0; l_side < 4; ++l_side) {
for (int i = 0; i <= m_square_size; ++i) {
if (i>0)
l_Fence_Position += offsets[l_side];
fences[l_Vector_Pos].setPosition(l_Fence_Position);
++l_Vector_Pos;
}
}
}
相关文章:
- 如何从未知视图中声明范围::v3::View 变量
- 通过 C++ 中的重载构造函数初始化未知类型的变量
- C++:将未知类型的对象存储为成员变量的类
- 如何将局部变量初始化为C++的未知值
- 局部变量显式启动为零,并且在 C++ 语言中没有未知值
- 从C++调用 Python 或 Lua 来计算表达式,仅在需要时计算未知变量
- ExprTK 未知变量分辨率取决于表达式类型
- 如何创建一个未知数变量和未知类型变量的构造函数
- 字符串流到具有未知分隔符的变量
- 变量错误:未知类型名称
- C 通过未知名的变量到方法
- C++ 中的未知变量声明语法
- C++未知变量类型.我应该使用模板吗
- 如何在if/else序列中定义未知类型的全局变量
- 如何保存类用户传递的未知变量
- 带有变量且参数数量未知的c++函数
- 变量因未知原因而更改
- Wt Dbo MySQL 后端连接错误"SET storage_engine=INNODB;":未知的系统变量'storage_engine'
- Qt C++函数中断删除未知变量
- 如何为未知容器声明迭代器变量