digitalmars.D - Error: class myClass.myClass() is used as a type
- "rsk82" <rsk82 live.com> Jan 27 2013
- "Dicebot" <m.strashun gmail.com> Jan 27 2013
- "rsk82" <rsk82 live.com> Jan 27 2013
- "Daniel Kozak" <kozzi11 gmail.com> Jan 27 2013
- Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> Jan 27 2013
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= <acehreli yahoo.com> Jan 27 2013
- "Namespace" <rswhite4 googlemail.com> Jan 27 2013
- "rsk82" <rsk82 live.com> Jan 27 2013
- "jerro" <a a.com> Jan 27 2013
- "F i L" <witte2008 gmail.com> Jan 28 2013
- "F i L" <witte2008 gmail.com> Jan 28 2013
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 ?
Jan 27 2013
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.
Jan 27 2013
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
Jan 27 2013
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() { } }
Jan 27 2013
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
Jan 27 2013
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
Jan 27 2013
All of your topics shouldn't be here. Post in D.learn instead.
Jan 27 2013
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.
Jan 27 2013
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.
Jan 27 2013
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()
Jan 28 2013
F i L wrote:class myClass() { this() { ... } }
Whoops, forgot to remove the '()' after 'myClass'. As others have pointed out, that will make 'myClass' a template-class.
Jan 28 2013









"Dicebot" <m.strashun gmail.com> 