C++ 在另一个类中检查布尔值

C++ 在另一个类中检查布尔值,c++,C++,我肯定这是一个简单的解决办法,但我似乎找不到一个直接的答案为我的问题 因此,在GameScreenLevel1.ccp文件中,我有这样一个bool: bool GameScreenLevel1::LevelComplete() { if(mEnemies.empty() && mFruit.empty()) { return true; } return false; } GameScreenLevel1 GameScreenLe

我肯定这是一个简单的解决办法,但我似乎找不到一个直接的答案为我的问题

因此,在GameScreenLevel1.ccp文件中,我有这样一个bool:

bool GameScreenLevel1::LevelComplete()
{
    if(mEnemies.empty() && mFruit.empty())
    {
        return true;
    }
    return false;
}
GameScreenLevel1 GameScreenLevel1_(/*constructors*/);
/*extra stuff */
if(GameScreenLevel1_.LevelComplete()) {
    /* Code here */
}
在文件GameScreenManager.ccp的更新函数中,我尝试调用它,看看它是否正确

if(GameScreenLevel1.LevelComplete() == true)
    {
        ChangeScreen(SCREEN_LEVEL2);
    }
我知道我不能使用
(GameScreenLevel1::LevelComplete()==true)
,因为bool是非静态的,所以我想知道如何从其他类引用此bool


感谢阅读和回答

我不确定问题是什么,但是如果您只是尝试检查
LevelComplete()
的返回,那么您编写的内容几乎可以。它可以浓缩成如下内容:

bool GameScreenLevel1::LevelComplete()
{
    return (mEnemies.empty() && mFruit.empty());
}
然后在您的
Gamescreenmanager.cpp
中,您可以执行以下操作:

bool GameScreenLevel1::LevelComplete()
{
    if(mEnemies.empty() && mFruit.empty())
    {
        return true;
    }
    return false;
}
GameScreenLevel1 GameScreenLevel1_(/*constructors*/);
/*extra stuff */
if(GameScreenLevel1_.LevelComplete()) {
    /* Code here */
}

欢迎来到SO!不幸的是,这个问题没有任何意义。这不是“一个
bool
”;它是返回
bool
的类的成员函数。您需要一个类型为
GameScreenLevel1
的对象。我建议再次阅读C++类中关于类的章节。因此,该行应该读取一些类似于If(StudioStudio,LealEnguleEf())的内容……您可以将<代码> LoeFrime的正文简化为<代码>返回MeMeIs.代码>也可以,如果代码(fo) @ FrdodoFLUW,可以将代码简化为<代码> >(FoO)< /COD> @ FrdodoFLAS:或许我们可以在OP有更多的经验时回到主观的“简化”的东西。我也不太明白你的意思,我对C++完全不太有经验。我的构造函数看起来必须先初始化对象,然后才能访问成员变量。很抱歉,意外地按了enter键,未能及时进行编辑。我也不太明白你的意思,我对C++的经验不是很丰富。我不知道什么是
GameScreenLevel1 GameScreenLevel1.(/*构造函数*/)
确实在做,在我看来它什么都没做。如果我将LevelComplete转换为一个void,并在GameScreenLevel1中定义了一个bool(称为“complete”),该bool根据当前代码中的if语句设置为true或false,然后引用该bool,那么它会起作用吗?看起来您缺少了一个关键的OOP知识。类只不过是对象的蓝图。如果要使用
GameScreenLevel1
类型的对象,需要初始化该对象。初始化是通过构造函数完成的。当我编写
/*构造函数*/
时,我的意思是输入构造函数采用的w/e参数。这段代码创建了一个
GameScreenLevel\uuu
对象,您可以使用.Aha访问成员变量/函数,我明白了。我已经在GameScreenManager
GameScreenManager::GameScreenManager(SDL_Renderer*Renderer,SCREENS startScreen){mrender=Renderer;mCurrentScreen=NULL;//确保设置了第一个屏幕。ChangeScreen(startScreen);}
,那么我要修改它吗?