<div dir="ltr"><span style="font-size:12.8px">Maximilian,</span><br><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">That's not a reasonable expectation. Mesh **isa** vtkPolyData, and not vice-versa. Look at docs for dynamic_cast in C++. In spirit, SafeDownCast is essentially the same thing.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Utkarsh</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 9, 2017 at 2:12 PM, Maximilian Weiherer <span dir="ltr"><<a href="mailto:weiherer.maximilian@gmx.de" target="_blank">weiherer.maximilian@gmx.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="DE" link="blue" vlink="purple"><div class="m_5834314892408756603WordSection1"><p class="MsoNormal">Hi Utkarsh, <u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">thanks for your reply. I created the custom mesh class in order to add some new functionality (e.g. a method to check whether a mesh intersects another mesh). The vtkPolyData object which should be casted is the output of a vtkSTLReader, i.e. <u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">* mesh = </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">::SafeDownCast(reader-><wbr>GetOutput()); </span><span style="font-size:9.5pt;font-family:Consolas;color:green">// mesh always equals NULL</span><u></u><u></u></p><p class="MsoNormal">Best regards<u></u><u></u></p><p class="MsoNormal">Maximilian<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><b>Von:</b> Utkarsh Ayachit [mailto:<a href="mailto:utkarsh.ayachit@kitware.com" target="_blank">utkarsh.ayachit@<wbr>kitware.com</a>] <br><b>Gesendet:</b> Mittwoch, 9. August 2017 17:53<br><b>An:</b> Maximilian Weiherer <<a href="mailto:weiherer.maximilian@gmx.de" target="_blank">weiherer.maximilian@gmx.de</a>><br><b>Cc:</b> vtk <<a href="mailto:vtkusers@vtk.org" target="_blank">vtkusers@vtk.org</a>><br><b>Betreff:</b> Re: [vtkusers] SafeDownCast does not work properly<u></u><u></u></p><span class=""><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal"><span style="font-size:9.5pt">Maximilian,</span><u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span style="font-size:9.5pt">I am confused why any arbitrary vtkPolyData object would be castable to "Mesh". It will only return non-null, if it's is indeed created as a Mesh. Is it? Where's the "<vtkPolyData object>" coming from?</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span style="font-size:9.5pt">Utkarsh</span><u></u><u></u></p></div></div></span><div><p class="MsoNormal"><u></u> <u></u></p><div><span class=""><p class="MsoNormal">On Wed, Aug 9, 2017 at 11:50 AM, Maximilian Weiherer <<a href="mailto:weiherer.maximilian@gmx.de" target="_blank">weiherer.maximilian@gmx.de</a>> wrote:<u></u><u></u></p></span><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"><div><span class=""><div><p class="MsoNormal">Hi all, <u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">I defined my own mesh class (named <b>Mesh</b>) by inheriting from vtkPolyData. Now I am struggling with the SafeDownCast method in order to cast a vtkPolyData object into a <b>Mesh</b> object. Whenever I am applying a SafeDownCast to a vtkPolyData object, NULL is returned.<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">The <b>Mesh</b> class looks as follows:<u></u><u></u></p><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">class</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> : </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">vtkPolyData</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">{</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">  </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">public</span><span style="font-size:9.5pt;font-family:Consolas;color:black">:</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">static</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">* New();</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    </span><span style="font-size:9.5pt;font-family:Consolas;color:#6f008a">vtkTypeMacro</span><span style="font-size:9.5pt;font-family:Consolas;color:black">(</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">, </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">vtkPolyData</span><span style="font-size:9.5pt;font-family:Consolas;color:black">);</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> PrintSelf(</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">ostream</span><span style="font-size:9.5pt;font-family:Consolas;color:black">& </span><span style="font-size:9.5pt;font-family:Consolas;color:gray">os</span><span style="font-size:9.5pt;font-family:Consolas;color:black">, </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">vtkIndent</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:gray">indent</span><span style="font-size:9.5pt;font-family:Consolas;color:black">);</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">  </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">protected</span><span style="font-size:9.5pt;font-family:Consolas;color:black">:</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    Mesh();</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    ~Mesh();</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">  </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">private</span><span style="font-size:9.5pt;font-family:Consolas;color:black">:</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    Mesh(</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">const</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">&); </span><span style="font-size:9.5pt;font-family:Consolas;color:green">// Not implemented.</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">    </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">void</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:teal">operator=</span><span style="font-size:9.5pt;font-family:Consolas;color:black">(</span><span style="font-size:9.5pt;font-family:Consolas;color:blue">const</span><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">&); </span><span style="font-size:9.5pt;font-family:Consolas;color:green">// Not implemented.</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black">};</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="color:black">…and this is the cast that does not work properly:</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="color:black"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">* mesh = </span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af">Mesh</span><span style="font-size:9.5pt;font-family:Consolas;color:black">::SafeDownCast(<<wbr>vtkPolyData object>); </span><span style="font-size:9.5pt;font-family:Consolas;color:green">// mesh always equals NULL</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:green"> </span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="color:black">Any help would be appreciated. Thanks!</span><u></u><u></u></p><p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black"> </span><u></u><u></u></p><p class="MsoNormal">Best regards<u></u><u></u></p><p class="MsoNormal">Maximilian<u></u><u></u></p></div></span><div id="m_5834314892408756603m_3987841914009693506DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2"><p class="MsoNormal"><u></u> <u></u></p><table class="m_5834314892408756603MsoNormalTable" border="1" cellpadding="0" style="border:none;border-top:solid #d3d4de 1.0pt"><tbody><tr><td width="55" style="width:41.25pt;border:none;padding:13.5pt .75pt .75pt .75pt"><p class="MsoNormal"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank"><span style="border:solid windowtext 1.0pt;padding:0cm;text-decoration:none"><img border="0" width="46" height="29" style="width:.4791in;height:.302in" id="m_5834314892408756603_x0000_i1025" src="cid:image001.jpg@01D3114B.9C05EDD0" alt="Das Bild wurde vom Absender entfernt."></span></a><u></u><u></u></p></td><td width="470" style="width:352.5pt;border:none;padding:12.75pt .75pt .75pt .75pt"><p class="MsoNormal" style="line-height:13.5pt"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#41424e">Virenfrei. <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank"><span style="color:#4453ea">www.avast.com</span></a> <u></u><u></u></span></p></td></tr></tbody></table></div></div><span class=""><p class="MsoNormal" style="margin-bottom:12.0pt"><br>______________________________<wbr>_________________<br>Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br><br>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br><br>Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_<wbr>FAQ</a><br><br>Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers" target="_blank">http://markmail.org/search/?q=<wbr>vtkusers</a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/vtkusers</a><u></u><u></u></p></span></blockquote></div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></blockquote></div><br></div>