<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7651.59">
<TITLE>Problem with method definitions</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">Howdy:</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT SIZE=2 FACE="Arial">I am using Visual C++ .NET Version 7.1 and building IDL using omniOrb Version 4.1.0.</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT SIZE=2 FACE="Arial">In the IDL I decalre an interface with several methods that have as parameters various combinations of base and complex types. Here is an example:</FONT></P>
<BR>
<BR>

<P><FONT SIZE=2 FACE="Courier New">boolean RequestCreateEntity( in EntityCreateDataType EntityData,</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">out </FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">long</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityId ) ;</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT SIZE=2 FACE="Courier New">The complex types passed as parameter:</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">typedef</FONT><FONT SIZE=2 FACE="Courier New"> </FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">struct</FONT><FONT SIZE=2 FACE="Courier New"> EntityCreateData</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">{</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">string&lt;100&gt; EntityName ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">string&lt;8&gt; EntityTag ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">short</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityClass ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">ENTITY_CLASSIFICATION_ENUM EntityClassification ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">ENTITY_TYPE_ENUM EntityType ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">boolean EntityActivationStatus ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">ENTITY_CONTROL_FLAG_ENUM EntityControlFlag ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">short</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityXPosition ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">short</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityYPosition ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">short</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityAltitude ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">float</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityCourse ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">short</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntitySpeed ;</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">} EntityCreateDataType ;</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT SIZE=2 FACE="Courier New">In the Implementation class I define this method:</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">bool</FONT><FONT SIZE=2 FACE="Courier New"> RequestCreateEntity(EntityCreateData EntityData,</FONT><BR>
<FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">long</FONT><FONT FACE="Times New Roman"></FONT> <FONT SIZE=2 FACE="Courier New">EntityId )</FONT> 

<BR><FONT SIZE=2 FACE="Courier New">{ &#8230; }</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT SIZE=2 FACE="Courier New">When I attempt to build the implementation class I get the following error on any method which has a structure type (or pointer to such) as a parameter:</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Form1.cpp(270) : error C2259: 'ObjectServerImpl' : cannot instantiate abstract class</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">due to following members:</FONT><FONT FACE="Times New Roman"><BR>
</FONT><FONT SIZE=2 FACE="Courier New">'CORBA::Boolean _impl_EntityInterface::RequestCreateEntity(const EntityCreateDataType &amp;,CORBA::Long &amp;)' : pure virtual function was not defined</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Looking at the omniOrb generated .h and .cpp files, I can find the _impl_EntityInterface class with the following definition:</FONT></P>

<P><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">virtual</FONT><FONT SIZE=2 FACE="Courier New"> CORBA::Boolean RequestCreateEntity(</FONT><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">const</FONT><FONT SIZE=2 FACE="Courier New"> EntityCreateDataType&amp; EntityData, CORBA::Long&amp; EntityId) = 0;</FONT><FONT FACE="Times New Roman"> </FONT>

<BR><FONT SIZE=2 FACE="Courier New">Why does this signature not match the one (I thought) I was creating in the idl? What am I missing here? Any help would be appreciated.</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">I have tried changing the parameters and return value of the methods to CORBA::Long and CORBA::Boolean as well.</FONT> 

<BR><FONT SIZE=2 FACE="Courier New">Thanks,</FONT><FONT FACE="Times New Roman"> </FONT>
</P>

</BODY>
</HTML>