我有一段代码如下:
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。 有什么想法吗?可能是我应该通过参考传递?
答案 0 :(得分:1)
我正在使用答案框,因为使用换行符更容易描述。
您的代码中有趣的部分可以简化为:
bool setSomething(int Val) {
FunctionOne(Val);
FunctionTwo(&Val);
....
}
你真的没有提供足够的信息来帮助你解决这些问题。