c ++:错误:无法将ns3 :: TracedValue <ns3 :: sequencenumber <unsigned int,=“” int =“”>>转换为‘uint32_t {aka unsigned int}

时间:2018-07-09 13:54:12

标签: c++ casting ns-3

我正在尝试将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语句以获取结果。预先感谢

1 个答案:

答案 0 :(得分:0)

m_tcb->m_highTxMark更改为m_tcb->m_highTxMark.Get().GetValue()应该可以。

看到编译器错误,很容易发现变量m_highTxMark的类型为ns3::TracedValue<ns3::SequenceNumber<unsigned int, int> >。我检查了ns3::TracedValuens3::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