class TcpTahoe是类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。 但我得到一个编译错误。
此致
答案 0 :(得分:1)
dynamic_cast
可用于转换为指针或引用。在您的情况下,Ptr<TcpTahoe>
都不是。你应该在这里使用原始指针。我不知道Ptr
类,但这些方面的内容应该有效:
Ptr<TcpTahoe> ptr = dynamic_cast<TcpTahoe*>(ns3TcpSocket->GetRawPtr());
(当然,GetRawPtr()
已经弥补。如果存在,Ptr
operator&
的大部分机会都可以解决问题。
哦,请记住dynamic_cast
如果无法完成演员,可能会返回NULL
。确保你对待这种情况。