C++ C++;访问冲突类数组

C++ C++;访问冲突类数组,c++,class,exception,sfml,C++,Class,Exception,Sfml,我已尝试修复此访问冲突异常数小时了!感谢您的帮助 我也尝试过使这个类中的所有变量都是静态的,但仍然得到了未处理的异常 案例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

我已尝试修复此访问冲突异常数小时了!感谢您的帮助

我也尝试过使这个类中的所有变量都是静态的,但仍然得到了未处理的异常

案例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);
}
};
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; }
}
我也试着让它成为非静态的

Entry.h

静态CCase*案例[26]

Entry.cpp

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);
}
};
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++){
案例[i]=新的CCase(窗口+i,1);
案例[i]->标准件案例移动(向量2F(300+i*100100+i*100));
}
对于(int i=0;i<5;i++){
如果(!Case[i]>b_CaseRemoved){Case[i]>DrawCase(window);/*spt_Case)){Case[i]>b_CaseRemoved=true;}
}

另外,是否有一种方法可以一次构造数组的所有元素以节省加载时间?

在这段代码中,您没有指定每个奇数元素:

for (int i = 0; i < 5; i++) {
     Case[i] = new CCase(window, ++i, 1);
for(int i=0;i<5;i++){
案例[i]=新的CCase(窗口+i,1);

i
迭代0、2、4,这是因为
i++
++i
在两行中增加了两倍。

谢谢你!我忘记了++i迭代i而不是仅仅添加i+1。有趣的是,最简单的错误是我们被困时间最长的错误。(至少对我来说):)