我有一段代碼,它的工作原理是這樣的:int值覆蓋到零有時
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;
}
....
}
的問題是「瓦爾」被覆蓋掉至0,即使調用者傳遞一些真正的價值像40或所以。有時,調用者傳遞正確的值(如40左右),否則將值傳遞給零,但值爲40。 對此有何想法?可能是我應該通過參考?
'dbPtr-> getDbName()'返回一個'char *'或一個'std :: string&'(或別的東西)? –
你也應該告訴我們在代碼中的哪一點Val損壞了。 LOG_MSG沒有給出預期的輸出?您應該使用打印語句在Val的意外更改中查找代碼行結果,並且您應該向我們顯示該行。 –
請澄清以下內容,您可以將Val與Val一起調用setSomething(也許是40)。 LOG_MSG將輸出40作爲日誌中的值。 LOG_MSG使用setSomething的值傳遞,或者可能是一個const引用。 WriteDB有時會編輯Val的值? –