Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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
C++ 有时int值被覆盖为零_C++ - Fatal编程技术网

C++ 有时int值被覆盖为零

C++ 有时int值被覆盖为零,c++,C++,我有一段代码如下: boolQwInterface::setSomething(const A& obj, const B& Name, int Val) { bool ret=true; LOG_MSG(msg, SIZE, "writing: %s, %s, %d", dbPtr->getDbName(), Name.getRepr().c_str(), Val); if(WriteDB(dbPtr->getid(), obj.c_st

我有一段代码如下:

boolQwInterface::setSomething(const A& obj, const B& Name, int Val)
{
    bool ret=true;

    LOG_MSG(msg, SIZE, "writing: %s, %s, %d", dbPtr->getDbName(), Name.getRepr().c_str(), Val);

    if(WriteDB(dbPtr->getid(), obj.c_string(), Name.getRepr().c_str(), (void*)&Val)<0)
    {
        LOG_MSG(msg, SIZE, "failed: %s", Name.getRepr().c_str());
        ret=false;
    }
    ....
}
boolQwInterface::setSomething(常量A和对象、常量B和名称、int Val)
{
bool-ret=真;
日志消息(消息,大小,“写入:%s,%s,%d”,dbPtr->getDbName(),Name.getRepr().c_str(),Val);

如果(WriteDB(dbPtr->getid(),obj.c_string(),Name.getRepr().c_str(),(void*)&Val)我使用的是答案框,因为这更容易用换行符来描述

代码中有趣的部分可以简化为:

bool setSomething(int Val) {
   FunctionOne(Val);
   FunctionTwo(&Val);
   ....
}

您确实没有提供足够的信息来帮助您解决所有这些问题。

是否返回
char*
std::string&
(或其他内容)?您还应该告诉我们Val在代码中的哪个点损坏。LOG_MSG是否没有给出预期的输出?您应该使用print语句查找导致Val意外更改的代码行,并向我们显示该行。请澄清以下内容,您将Val称为40(可能)的setSomething.LOG_MSG将输出40作为日志中的值。LOG_MSG使用传递值进行设置,或者可能是常量引用。WriteDB有时会编辑Val的值?我觉得这很奇怪。是否要访问
Val
的新值(可能是由
WriteDB
设置的)在
QwInterface::setSomething
退出后?如果是这样,您需要通过引用将
Val
传递给
setSomething
。听起来调用setSomething的代码中有一个bug,或者LOG_MSG中有一个bug。如果您能给我们一个简短、自包含、正确(可编译)的示例()我们可能会发现这个问题,但我认为您从问题中遗漏了太多代码,我们无法判断发生了什么。当使用Val=40调用setSomething时,FunctionOne(Val);将打印为0。setSomething是否应该类似于?bool setSomething(int&Val)因为在这个setSomething函数之外,当我们试图打印这个值时,它会显示0!好的,这里是setSomething(..)的调用方;unsigned int val;setSomething(name1,name2,static_cast(val);