[英]C++ Access Violation Class Array
我已经尝试修复此访问冲突异常几个小时了! 任何帮助表示赞赏!
我尝试过使此类中的所有变量也变为静态,但仍会得到未处理的异常!
Case.hpp
class CCase {
public:
Texture tex_Case;
Sprite spt_Case;
Text txt_CaseNumber;
int i_CaseNum, i_CaseValue;
bool b_PersonalCase = false, b_CaseRemoved = false;
void DrawCase(RenderWindow* window) {
FloatRect caseRect = spt_Case.getGlobalBounds();
FloatRect textRect = txt_CaseNumber.getLocalBounds();
txt_CaseNumber.setOrigin(textRect.left + textRect.width / 2.0f, textRect.top + textRect.height / 2.0f);
txt_CaseNumber.setPosition(Vector2f(caseRect.left + caseRect.width / 2.0f, caseRect.top + caseRect.height / 2.0f));
window->draw(spt_Case);
window->draw(txt_CaseNumber);
}
CCase(RenderWindow* window, int CaseNum, int CaseValue) {
i_CaseNum = CaseNum;
i_CaseValue = CaseValue;
tex_Case = ENG::TextureFromFile(window, "Data//Images//Case.jpg", "DrawGame", true, false, true);
spt_Case.setTexture(tex_Case);
spt_Case.setScale(Vector2f(0.05, 0.05));
txt_CaseNumber.setFont(Vars::Draw::txtFont);
txt_CaseNumber.setString(to_string(i_CaseValue));
txt_CaseNumber.setCharacterSize(44); // in pixels
txt_CaseNumber.setFillColor(Color::White);
txt_CaseNumber.setOutlineColor(Color::Black);
txt_CaseNumber.setOutlineThickness(1);
txt_CaseNumber.setStyle(Text::Bold);
}
};
我也尝试过使其变为非静态
Entry.h
static CCase* Case[26];
Entry.cpp
for (int i = 0; i < 5; i++) {
Case[i] = new CCase(window, ++i, 1);
Case[i]->spt_Case.move(Vector2f(300 + i*100, 100 + i*100));
}
for (int i = 0; i < 5; i++) {
if (!Case[i]->b_CaseRemoved) { Case[i]->DrawCase(window); /* <-- Exception Is Caused By This Func */ }
// if (ENG::ObjectIsClicked(window, Case[i]->spt_Case)) { Case[i]->b_CaseRemoved = true; }
}
另外,有没有一种方法可以一次构造数组的所有元素以节省加载时间?
在此代码中,未分配每个奇数元素:
for (int i = 0; i < 5; i++) {
Case[i] = new CCase(window, ++i, 1);
由于两行中i++
和++i
加倍, i
迭代了0、2、4。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.