动态投射智能指针

dynamic cast smart pointer

本文关键字:指针 智能 动态      更新时间:2023-10-16
class

TcpTahoe是class socket的子类。看 http://www.nsnam.org/doxygen/classns3_1_1_tcp_tahoe.html(我想模拟一个小型网络。

法典:

Ptr<Socket> ns3TcpSocket;
...
Ptr<TcpTahoe> ptr = dynamic_cast< Ptr<TcpTahoe> >(ns3TcpSocket);
uint32_t ssthresh = ptr->GetSSThresh2();
cout << ssthresh;

所以我现在在运行时,ns3TcpSocket将是一个TcpTahoeSocket。但是我收到编译错误。

问候

dynamic_cast可用于转换为指针或引用。在您的情况下,Ptr<TcpTahoe>两者都不是。应在此处使用原始指针。我不知道Ptr类,但沿着这些思路应该可以工作:

Ptr<TcpTahoe> ptr = dynamic_cast<TcpTahoe*>(ns3TcpSocket->GetRawPtr());

(当然,GetRawPtr()是编造的。大多数机会Ptroperator&可以做到这一点,如果存在的话)。

哦,请记住

,如果演员无法完成,dynamic_cast可能会NULL返回。确保你处理这种情况。