我正在尝试将TracedValue<uint32_t> m_bytesInFlight
强制转换为 uint32_t ,但出现以下错误
error: cannot convert ‘ns3::TracedValue<ns3::SequenceNumber<unsigned int, int> >’ to ‘uint32_t {aka unsigned int}
函数原型和变量声明是
uint32_t UnAckDCount (void) const;
TracedValue<uint32_t> m_bytesInFlight {0}; //!< Bytes in flight
我在这里调用函数
uint32_t
TcpSocketBase::UnAckDCount () const
{
return m_tcb->m_highTxMark - (uint32_t) m_tcb->m_bytesInFlight;
}
请提出一些方法,以便我可以执行return语句以获取结果。预先感谢
答案 0 :(得分:0)
将m_tcb->m_highTxMark
更改为m_tcb->m_highTxMark.Get().GetValue()
应该可以。
看到编译器错误,很容易发现变量m_highTxMark
的类型为ns3::TracedValue<ns3::SequenceNumber<unsigned int, int> >
。我检查了ns3::TracedValue
和ns3::SequenceNumber
的文档,它们都分别具有getter函数Get()和GetValue()。
请参阅:
https://www.nsnam.org/doxygen/classns3_1_1_traced_value.html https://www.nsnam.org/doxygen/classns3_1_1_sequence_number.html