View mode: basic / threaded / horizontal-split · Log in · Help
January 27, 2013
Error: class myClass.myClass() is used as a type
this is my module:

module myClass;

class myClass () {
  this() {

  }
};

and main app:

import myClass;

int main() {
  myClass my_instance = new myClass();
  return 0;
}

What's wrong here ?
January 27, 2013
Re: Error: class myClass.myClass() is used as a type
On Sunday, 27 January 2013 at 19:55:07 UTC, rsk82 wrote:
> this is my module:
>
> module myClass;
>
> class myClass () {
>   this() {
>
>   }
> };
>
> and main app:
>
> import myClass;
>
> int main() {
>   myClass my_instance = new myClass();
>   return 0;
> }
>
> What's wrong here ?

new MyClass.MyClass(), I suppose. Despite import is public, 
module symbol has higher priority in name resolution.
January 27, 2013
Re: Error: class myClass.myClass() is used as a type
On Sunday, 27 January 2013 at 20:04:17 UTC, Dicebot wrote:
> new MyClass.MyClass(), I suppose. Despite import is public, 
> module symbol has higher priority in name resolution.

Nope. I changed module name to myClass_mod, now got this:

 Error: class myClass_mod.myClass() is used as a type
January 27, 2013
Re: Error: class myClass.myClass() is used as a type
On Sunday, 27 January 2013 at 19:55:07 UTC, rsk82 wrote:
> this is my module:
>
> module myClass;
>
> class myClass () {
>   this() {
>
>   }
> };
>
> and main app:
>
> import myClass;
>
> int main() {
>   myClass my_instance = new myClass();
>   return 0;
> }
>
> What's wrong here ?

class myClass () {
   this() {

   }
};

should be

class myClass {
   this() {

   }
}
January 27, 2013
Re: Error: class myClass.myClass() is used as a type
All of your topics shouldn't be here. Post in D.learn instead.
January 27, 2013
Re: Error: class myClass.myClass() is used as a type
On Sunday, 27 January 2013 at 20:13:05 UTC, Daniel Kozak wrote:
> should be
>
> class myClass {
>    this() {
>
>    }
> }

Thanks, that killed the original error. Now the linker says:

OPTLINK (R) for Win32  Release 8.00.12
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
t3.obj(t3)
 Error 42: Symbol Undefined 
_D11myClass_mod7myClass6__ctorMFZC11myClass_mod7myClass
t3.obj(t3)
 Error 42: Symbol Undefined _D11myClass_mod7myClass7__ClassZ
--- errorlevel 2


@Namespace: ok, I will post my new topics there, but I like to 
end with this issue and not create another topic for that.
January 27, 2013
Re: Error: class myClass.myClass() is used as a type
On Sunday, 27 January 2013 at 20:24:38 UTC, rsk82 wrote:
> On Sunday, 27 January 2013 at 20:13:05 UTC, Daniel Kozak wrote:
>> should be
>>
>> class myClass {
>>   this() {
>>
>>   }
>> }
>
> Thanks, that killed the original error. Now the linker says:
>
> OPTLINK (R) for Win32  Release 8.00.12
> Copyright (C) Digital Mars 1989-2010  All rights reserved.
> http://www.digitalmars.com/ctg/optlink.html
> t3.obj(t3)
>  Error 42: Symbol Undefined 
> _D11myClass_mod7myClass6__ctorMFZC11myClass_mod7myClass
> t3.obj(t3)
>  Error 42: Symbol Undefined _D11myClass_mod7myClass7__ClassZ
> --- errorlevel 2
>
>
> @Namespace: ok, I will post my new topics there, but I like to 
> end with this issue and not create another topic for that.

You need to put myClass_mod.d (or what ever the file name is) on 
the command line. You could also use rdmd, which will find all 
the imported files automatically.
January 28, 2013
Re: Error: class myClass.myClass() is used as a type
On 1/27/13 3:29 PM, jerro wrote:
> You need to put myClass_mod.d (or what ever the file name is) on the
> command line. You could also use rdmd, which will find all the imported
> files automatically.

BTW I just sent a pull request that makes rdmd faster for large projects 
by reducing the number of stat calls:

https://github.com/D-Programming-Language/tools/pull/41


Andrei
January 28, 2013
Re: Error: class myClass.myClass() is used as a type
On 01/27/2013 12:13 PM, Daniel Kozak wrote:
> On Sunday, 27 January 2013 at 19:55:07 UTC, rsk82 wrote:

>> What's wrong here ?
>
> class myClass () {
> this() {
>
> }
> };
>
> should be
>
> class myClass {
> this() {
>
> }
> }

Yeah... Those empty parentheses were making myClass a class template, 
not a class. Apparently the syntax (or the compiler) allows template 
definitions without template parameters, which can still be instantiated:

class myClass () {
  this() {

  }
}

int main() {
    myClass!() my_instance = new myClass!();
  return 0;
}

Ali
January 29, 2013
Re: Error: class myClass.myClass() is used as a type
rsk82 wrote:
> What's wrong here ?

module myClass (myclass.d);

    class myClass() {
        this() { ... }
    }

and main app (main.d):

    import myclass;

    void main() {
        myClass my_instance = new myClass();
    }

then compile with:

    $ dmd main.d myclass.d
or:
    $ dmd main myclass
or:
    $ rdmd main


ps. Module names should be lowercase (see docs), and you can 
safely use 'void' for main()
« First   ‹ Prev
1 2
Top | Discussion index | About this forum | D home