int值有时会被覆盖为零

时间:2011-07-18 04:46:55

标签: 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_string(), Name.getRepr().c_str(), (void*)&Val)<0)
    {
        LOG_MSG(msg, SIZE, "failed: %s", Name.getRepr().c_str());
        ret=false;
    }
    ....
}

问题是“Val”被覆盖为0,即使调用者正在传递一些真正的值,如40左右。有时,它会调用者传递的正确值(如40左右),否则它会将值设为零,尽管传递给它的值为40。 有什么想法吗?可能是我应该通过参考传递?

1 个答案:

答案 0 :(得分:1)

我正在使用答案框,因为使用换行符更容易描述。

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

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

你真的没有提供足够的信息来帮助你解决这些问题。