【发布时间】:2012-05-26 14:14:18
【问题描述】:
Message 是我创建的一个类。我在传递给 messageTimeOut (和其他一些函数)的主函数中有一组它们。在使用 itorator 的 messageTimeOut 中,我正在循环它们并访问不同的成员函数。但是,我只能访问迭代器指向的 Message 的 const 成员函数。如果我尝试访问非 const 成员函数,则会收到错误消息:
“在函数‘void messageTimeOut(threadParameters*)’中: main.cpp:74:33:错误:将 'const Message' 作为 'this' 参数传递 'void Message::setTimedOut(bool)' 丢弃限定符 [-fpermissive]。”
我无法访问 const Message 对象的非常量成员函数是有道理的,但是我如何才能使它成为非常量消息对象,以便我可以访问非常量成员函数并更改消息?谢谢
我的部分代码:
[ . . . ]
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;
}
【问题讨论】:
-
threadParameters的成员messages的声明类型是什么?
标签: c++ stl iterator set constants