www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - "Symbol undefined" on interface with public getter and package setter

reply TSalm <TSalm free.fr> writes:
Hello,

When I compile the code below, I've got the following error :
  OPTLINK (R) for Win32  Release 8.00.1
  Copyright (C) Digital Mars 1989-2004  All rights reserved.
  private_method_in_interface_file3.obj(private_method_in_interface_file3)
   Error 42: Symbol Undefined  
_D33private_method_in_interface_file31I4funcMFiZv
  --- errorlevel 1


/* ----- CODE ------ */
interface I
{
    int func() ;
    package void func(int);
}

class A:I
{
   int i;

   package  void func(int i)
   { this.i = i; }

   int func()
   { return i; }
}

void main()
{

   I a = new A ;
   a.func = 10 ;
   Stdout(a.func).newline ;

}
/* --- END CODE ---- */


Thanks in advance for your help,
TSalm
Feb 20 2009
next sibling parent TSalm <TSalm free.fr> writes:
It seems this comes only from the "package" method.

The error is the same with this code :
/* --- CODE --- */
interface I
{
    package void setFunc(int);
}


class A:I
{
   int i;

   package  void setFunc(int i)
   { this.i = i ; }

}


void main()
{

   I a = new A;
   a.setFunc = 10;

}
/* --- END CODE --- */

 Hello,

 When I compile the code below, I've got the following error :
   OPTLINK (R) for Win32  Release 8.00.1
   Copyright (C) Digital Mars 1989-2004  All rights reserved.
   private_method_in_interface_file3.obj(private_method_in_interface_file3)
    Error 42: Symbol Undefined  
 _D33private_method_in_interface_file31I4funcMFiZv
   --- errorlevel 1


 /* ----- CODE ------ */
 interface I
 {
     int func() ;
     package void func(int);
 }

 class A:I
 {
    int i;

    package  void func(int i)
    { this.i = i; }

    int func()
    { return i; }
 }

 void main()
 {

    I a = new A ;
    a.func = 10 ;
    Stdout(a.func).newline ;

 }
 /* --- END CODE ---- */


 Thanks in advance for your help,
 TSalm
Feb 20 2009
prev sibling parent reply Jacob Carlborg <doob me.com> writes:
TSalm wrote:
 Hello,
 
 When I compile the code below, I've got the following error :
  OPTLINK (R) for Win32  Release 8.00.1
  Copyright (C) Digital Mars 1989-2004  All rights reserved.
  private_method_in_interface_file3.obj(private_method_in_interface_file3)
   Error 42: Symbol Undefined 
 _D33private_method_in_interface_file31I4funcMFiZv
  --- errorlevel 1
 
 
 /* ----- CODE ------ */
 interface I
 {
    int func() ;
    package void func(int);
 }
 
 class A:I
 {
   int i;
 
   package  void func(int i)
   { this.i = i; }
 
   int func()
   { return i; }
 }
 
 void main()
 {
 
   I a = new A ;
   a.func = 10 ;
   Stdout(a.func).newline ;
 
 }
 /* --- END CODE ---- */
 
 
 Thanks in advance for your help,
 TSalm
I'm not sure but I think package is not virtual.
Feb 20 2009
next sibling parent reply Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Fri, Feb 20, 2009 at 3:56 PM, Jacob Carlborg <doob me.com> wrote:
 I'm not sure but I think package is not virtual.
The compiler should catch that then.
Feb 20 2009
parent grauzone <none example.net> writes:
Last time I checked I could even use "override" to... erm, override 
methods that had package protection. The compiler didn't even complain, 
and I had to find out the hard way that the method wasn't virtual.
Feb 23 2009
prev sibling parent reply TSalm <TSalm free.fr> writes:
 I'm not sure but I think package is not virtual.
:-( So there's really no way to have a method declared "package" in an interface ?
Feb 20 2009
parent reply Daniel Keep <daniel.keep.lists gmail.com> writes:
TSalm wrote:
 I'm not sure but I think package is not virtual.
:-( So there's really no way to have a method declared "package" in an interface ?
You also can't have a private function in an interface. This once lost me four days trying to figure out why my program wouldn't link despite the function very obviously being there. Stick to public functions only. -- Daniel
Feb 20 2009
next sibling parent TSalm <TSalm free.fr> writes:
Le Sat, 21 Feb 2009 04:00:42 +0100, Daniel Keep  
<daniel.keep.lists gmail.com> a écrit:

 TSalm wrote:
 I'm not sure but I think package is not virtual.
:-( So there's really no way to have a method declared "package" in an interface ?
You also can't have a private function in an interface. This once lost me four days trying to figure out why my program wouldn't link despite the function very obviously being there. Stick to public functions only.
What a pity :( Thanks.
Feb 21 2009
prev sibling parent Ellery Newcomer <ellery-newcomer utulsa.edu> writes:
Daniel Keep wrote:
 
 TSalm wrote:
 I'm not sure but I think package is not virtual.
:-( So there's really no way to have a method declared "package" in an interface ?
You also can't have a private function in an interface. This once lost me four days trying to figure out why my program wouldn't link despite the function very obviously being there. Stick to public functions only. -- Daniel
Double thanks! I ran into this issue just a day or two ago.
Feb 23 2009