<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<small><font face="Helvetica, Arial, sans-serif">Hi all,<br>
<br>
I have extended/mangled WrapITK to create ITK wrappers for .NET CLR
languages (ie. C#, VB.NET, IronPython, etc.). I intend to release this
via the Insight Journal in the coming days. However, before I do I have
an issue with the ITK base code I would like to clear up: a nasty MSVC
internal compiler error (ICE) caused by using a superclass method from
a private inherited parent.<br>
<br>
It's hard to provide all the code I am using, so here is a summary of
my investigations: <br>
<br>
<b>The error:</b><br>
<font color="#660000" face="Courier New, Courier, monospace">C:\InsightToolkit-3.2.0-CVS\Code\Common\itkConstShapedNeighborhoodIterator.h(234)
: fatal error C1001: An internal error has occurred in the compiler.<br>
(compiler file 'msc1.cpp', line 1393)<br>
To work around this problem, try simplifying or changing the program
near the locations listed above.<br>
</font><br>
<b>The offending code: </b></font></small><font color="#000000"><small><font
 face="Helvetica, Arial, sans-serif"><font
 face="Courier New, Courier, monospace">itkConstShapedNeighborhoodIterator.h(234)</font></font></small></font><small><font
 face="Helvetica, Arial, sans-serif"><b>: </b><br>
<font color="#000099" face="Courier New, Courier, monospace">Superclass::GetImagePointer;<br>
Superclass::GetRadius;<br>
Superclass::GetIndex;<br>
...<br>
</font><br>
<b>The problem:</b><br>
<font color="#000099" face="Courier New, Courier, monospace"><font
 color="#666666">class ITK_EXPORT ConstShapedNeighborhoodIterator</font><br>
<font color="#666666">&nbsp; :&nbsp; </font><b>private</b><font color="#666666">
NeighborhoodIterator&lt;TImage, TBoundaryCondition&gt;</font><br>
</font><br>
<b>The fix:</b><br>
<font color="#000099" face="Courier New, Courier, monospace">const
ImageType * GetImagePointer(void) const { return
Superclass::GetImagePointer(); }<br>
const SizeType GetRadius() const { return Superclass::GetRadius(); }<br>
virtual IndexType GetIndex(void) const { return Superclass::GetIndex();
}<br>
...<br>
</font><br>
<b>My questions:</b><br>
1. Has anyone else run into this before?<br>
2. Am I the only person who <i>will </i>ever run into this (because
of the funky C++/CLI stuff I am doing to wrap ITK for .NET)?<br>
3. Is it worth/possible to fix this in the CVS (I can provide a
diff/patch if necessary)?<br>
<br>
<b>FYI: my system:</b><br>
</font></small><small><font face="Helvetica, Arial, sans-serif">Platform:
Windows XP SP2<br>
Computer: Intel Pentium 3.00 GHz, dual core<br>
Compiler: Microsoft Visual Studio 2005 (v8.050727.363 ie. SP1 Beta)<br>
CMake: 2.4.2<br>
ITK: 3.2.0 CVS on Tues 27 Mar 2007</font></small><br>
<small><font face="Helvetica, Arial, sans-serif"><br>
Thanks for your time.<br>
<br>
Cheers, Dan</font></small><small><font
 face="Helvetica, Arial, sans-serif">&nbsp; </font></small><br>
</body>
</html>