64,654
社区成员
发帖
与我相关
我的任务
分享
#include <list>
class ICommand{public : virtual void vfunc(){}};
class CSession : public ICommand{};
void Test(ICommand * & pCommand){delete pCommand;pCommand = NULL;}
int main(int argc, char *argv[])
{
std::list<CSession*> sessions; sessions.push_back(new CSession());
ICommand *p = dynamic_cast<ICommand*>(*sessions.begin());
Test(p);
sessions.push_back(new CSession());
Test(dynamic_cast<ICommand*>(*sessions.begin())); // cannot convert parameter 1 from 'ICommand *' to 'ICommand *&'
return 0;
}
// 参照这个
int value()
{
return 1;
}
void changeValue(int& n)
{
++n;
}
int main(int argc, char *argv[])
{
int n = 1;
changeValue(n); // OK
changeValue(value()); // 不能将参数 1 从“int”转换为“int &”
//
}
ICommand *p = dynamic_cast<ICommand*>(*sessions.begin());
Test(p);
Test(dynamic_cast<ICommand*>(*sessions.begin())); // cannot convert parameter 1 from 'ICommand *' to 'ICommand *&'
auto iter = sessions.begin();
ICommand *p = static_cast<ICommand*>(*iter);
sessions.erase(iter);
Test(p);