0

クラスTcpTahoeは、クラスソケットのサブクラスです。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になります。しかし、コンパイルエラーが発生します。

よろしく

4

1 に答える 1

1

dynamic_castポインタまたは参照のいずれかに変換するために使用できます。あなたの場合、Ptr<TcpTahoe>どちらでもありません。ここでは生のポインタを使用する必要があります。私はクラスを知りませんが、Ptrこれらの線に沿った何かがうまくいくはずです:

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

GetRawPtr()もちろん、構成されています。ほとんどPtroperator&場合、存在する場合はトリックを実行します)。

ああ、キャストができないとdynamic_cast戻ってくるかもしれないことを覚えておいてください。NULLあなたがその場合を扱うことを確認してください。

于 2012-06-29T20:57:57.560 に答える