メッセージは私が作ったクラスです。messageTimeOut(および他のいくつかの関数)に渡すメイン関数にそれらのセットがあります。itoratorを使用するmessageTimeOutでは、それらをループして、さまざまなメンバー関数にアクセスしています。ただし、イテレータが指すメッセージのconstメンバー関数にしかアクセスできません。const以外のメンバー関数にアクセスしようとすると、次のエラーが発生します。
「関数内'voidmessageTimeOut(threadParameters *)':main.cpp:74:33:エラー:'constMessage'を'void Message :: setTimedOut(bool)'の'this'引数として渡すと修飾子[-fpermissive]が破棄されます。 」</p>
const Messageオブジェクトの非constメンバー関数にアクセスできないことは理にかなっていますが、非constメンバー関数にアクセスしてメッセージを変更できるように、これを非constメッセージオブジェクトにするにはどうすればよいですか?ありがとう
私のコードの一部:
[ . . . ]
void messageTimeOut( threadParameters* params )
{
set<Message>::iterator it = params->messages->begin();
[ . . . ]
for ( ; it != params->messages->end(); ++it )
{
if ( (it->createdTime() + RESPONSE_WAIT) < GetTickCount() )
{
it->setTimedOut(true); // error
}
}
ReleaseMutex(sentQueueMutex);
}
[ . . . ]
int main()
{
threadParameters rmparameters;
set<Message> sentMessages;
[ . . . ]
rmparameters.logFile = &logFile;
rmparameters.socket = socketDesciptor;
rmparameters.messages = &sentMessages;
[ . . . ]
messageTimeOut( rmparameters );
[ . . . ]
return 0;
}