私はこのように動作するコードの部分を持ってゼロに上書き: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;
}
....
}
問題は、発信者が40かのようないくつかの本物の値を渡しているにもかかわらず、0に上書きなっている「ヴァル」でありますそう。場合によっては、呼び出し側が(40程度のように)正しい値をとることもあります。そうでない場合は、40という値が渡されますが、0になります。 これについてのご意見はありますか?私は参照渡す必要がありますか?
'dbPtr-> getDbName()'は 'char *'または 'std :: string&'(何か他のもの)を返しますか? –
また、コード内のValが破損している箇所を教えてください。 LOG_MSGは期待された出力を与えませんか? printステートメントを使用して、コード行がValの予期しない変更を引き起こしていることを確認し、その行を表示する必要があります。 –
以下を明確にし、setSomethingをVal(40)(おそらく)と呼んでください。 LOG_MSGはログの値として40を出力します。 LOG_MSGは、setSomethingの値渡しを使用するか、おそらくはconst参照です。 WriteDBは時々Valの値を編集しますか? –