Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布尔返回24 我在C++中制作了一个库,它的BoL总是假的,但是当我从另一个项目中打印出来时,它是24。_C++_Boolean - Fatal编程技术网

布尔返回24 我在C++中制作了一个库,它的BoL总是假的,但是当我从另一个项目中打印出来时,它是24。

布尔返回24 我在C++中制作了一个库,它的BoL总是假的,但是当我从另一个项目中打印出来时,它是24。,c++,boolean,C++,Boolean,库代码 void Window::update() { closeRequested = false; } 其他项目 int main(int argc, char **argv) { init(); wnd = new Window(); while (1 == 1) { wnd->update(); std::cout << wnd->closeRequested << std::endl

库代码

void Window::update() {
    closeRequested = false;
}
其他项目

int main(int argc, char **argv) {
    init();
    wnd = new Window();

    while (1 == 1) {
        wnd->update();
        std::cout << wnd->closeRequested << std::endl;
    }

    wnd->~Window();
    end();
    return 0;
}
int main(int argc,char**argv){
init();
wnd=新窗口();
而(1==1){
wnd->update();
std::cout closerequest~Window();
end();
返回0;
}

在C++中,布尔变量返回< <代码> > < <代码> > > <代码> 0 > />代码> <代码> false <代码>,始终。您获得不同值的事实意味着内存损坏,或者您没有得到布尔值。

我的投票是在第二个。如果对象的定义在两个不同的源文件中不同,那么对象的内存布局可能会改变,并且您将得到与写入的值不对应的对象部分

对象布局中的不匹配可能以不同的方式导致。一些常见的方式:

  • 两个源文件之间的不同结构填充设置
  • 不同的typedef或
    #定义
    宏,导致成员的类型不同
  • 在一个源与另一个源中计算不同的条件宏

在window类中。首先,欢迎使用StackOverflow。您不应该直接调用析构函数。而应该使用
delete
(但在这种情况下,您甚至不需要为
new
分配内存).closeRequested的定义是什么?它们是一个SDL窗口,它检查是否按下了关闭按钮。我实际上认为0=False和非0=True,不一定是1。int-isTrue=24,if-isTrue将计算为True。我该如何解决这个问题?@ventsyv如果您正在计算任何其他类型的整数类型,则这是真的,但不是一个
bool
@Lewis您只需深入挖掘就可以找到原因。好的第一步是在对象的两个位置上使用
sizeof
,看看它是否匹配。@Lewis:我要尝试的第一件事是干净地重建。确保所有内容都是使用相同版本的标题构建的。