[omniORB] Interface Inheritance
    Duncan Grisby 
    duncan at grisby.org
       
    Fri Jan  9 11:50:56 GMT 2009
    
    
  
On Friday 9 January, =?iso-8859-1?Q?V=E1zquez_Landa=2C_David?= wrote:
> Hi, I have a quick question.
> 
> Say I have an IDL such as:
> 
> Interface BaseInterface 
> {
> 	void forty(int two);
> };
> 
> Interface ChildInterface : BaseInterface 
> {
> };
> 
> And then in the c++ implementation I want to have something like:
> 
> // --- some random class does:
> Void test (BaseInterface_var baseInterface)
> {
> 	cout << "yay";
> }
You should never ever use a _var type as a parameter type. If you do,
you will get into a great deal of memory management pain. You should
always use the _ptr type as the parameter type.
> // --- I want to call this function with the child interface.
> 
> // For the sake of the argument:
> ChildInterface_var childInterface = getChildInterface();
> 
> // This doesn't work
> test(childInterface);
> 
> So, what would be the way to make this work?  Should I use
> ChildInterface_ptr instead?
No, you should define the parameter to the test() function as
BaseInterface_ptr. Then the code you have here will work just fine.
Cheers,
Duncan.
-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --
    
    
More information about the omniORB-list
mailing list