C++ 动态强制转换智能指针

C++ 动态强制转换智能指针,c++,pointers,dynamic,casting,C++,Pointers,Dynamic,Casting,类tcpthoe是类socket的一个子类。 看 (我想模拟一个小型网络。) 代码: Ptr NS3TCSocket; ... Ptr Ptr=动态铸造(NS3TCSocket); uint32_t ssthresh=ptr->GetSSThresh2(); coutdynamic\u cast可用于转换为指针或引用。在您的情况下,Ptr两者都不是。您应该在这里使用原始指针。我不知道Ptr类,但应该可以使用以下方法: Ptr<TcpTahoe> ptr = dynamic_cast&

类tcpthoe是类socket的一个子类。 看 (我想模拟一个小型网络。)

代码:

Ptr NS3TCSocket;
...
Ptr Ptr=动态铸造(NS3TCSocket);
uint32_t ssthresh=ptr->GetSSThresh2();

cout
dynamic\u cast
可用于转换为指针或引用。在您的情况下,
Ptr
两者都不是。您应该在这里使用原始指针。我不知道
Ptr
类,但应该可以使用以下方法:

Ptr<TcpTahoe> ptr = dynamic_cast<TcpTahoe*>(ns3TcpSocket->GetRawPtr());
Ptr Ptr=dynamic_cast(ns3tcsocket->GetRawPtr());
GetRawPtr()
当然是虚构的。如果存在的话,
Ptr
操作符&
很有可能会起作用)


哦,请记住,如果无法执行强制转换,动态强制转换可能会返回NULL。确保您处理了这种情况。

作为StackOverflow的普通用户,您可能已经知道SO是一个问答网站。你可能没有意识到你的帖子毫无疑问。你有具体的问题吗?对不起,我认为我的问题很明显。我的问题是,为什么会出现编译错误?我的代码中的问题在哪里?请编辑您的帖子以反映您的问题,并请包含错误消息的确切文本。(当我编译代码时,我会遇到很多错误,但我敢打赌你心里一定有一条特定的错误消息。)。。。其中,前几行错误是MindahOK中错误消息的一个很好的默认选项,我发现了这样一个函数,但它也不起作用。请你看一下这是Ptr课程。我尝试了dynamic_cast(PeekPointer(NS3TCSocket));尝试
Ptr-Ptr(动态_-cast(ns3tcsocket->PeekPointer())<代码> >在使用<代码> PeekPointer <代码>时考虑引用计数问题……对我来说时间太晚了…抱歉忘了我最后的评论,它工作了,我做了一个复制粘贴错误。但是我不理解这个动态映射,我希望这个动态映射 DistabyCase 不起作用,因为<代码> PTR 既不是引用。(
&
)也不是指针(
*
)。虽然它包装了指针,但从语言的角度来看,它只是另一个类。
Ptr<TcpTahoe> ptr = dynamic_cast<TcpTahoe*>(ns3TcpSocket->GetRawPtr());