digitalmars.D.learn - How to compile and use an external class
- Some Guy <me dontspamme.com> Dec 02 2008
- Lars Kyllingstad <public kyllingen.NOSPAMnet> Dec 02 2008
- Some Guy <me dontspamme.com> Dec 02 2008
- bearophile <bearophileHUGS lycos.com> Dec 02 2008
- Derek Parnell <derek psych.ward> Dec 02 2008
I am busy learning D and I want to be able to use classes now. I am used to programming in C# where it does everything for you and you don't have to think about this kind of thing so I now have no idea how to compile a program from the command line that uses a class in another source file. I have a source file called MyProgram.d which contains the main program and I have a file called MyClass.d that contains a class called MyClass. I want to be able to create an instance of MyClass in the main program but I don't know what to type to compile it the command line. This is what I have tried so far which doesn't work: dmd MyProgram.d MyClass.d Thanks in advance for your help.
Dec 02 2008
Some Guy wrote:I am busy learning D and I want to be able to use classes now. I am used to programming in C# where it does everything for you and you don't have to think about this kind of thing so I now have no idea how to compile a program from the command line that uses a class in another source file. I have a source file called MyProgram.d which contains the main program and I have a file called MyClass.d that contains a class called MyClass. I want to be able to create an instance of MyClass in the main program but I don't know what to type to compile it the command line. This is what I have tried so far which doesn't work: dmd MyProgram.d MyClass.d Thanks in advance for your help.
What error message are you getting? Did you remember to put module and import statements in your source files? MyClass.d: module MyClass; class MyClass { ... } MyProgram.d: module MyProgram; import MyClass; void main() { MyClass m = new MyClass; // Example ... } ... (The module statement in MyProgram.d isn't strictly necessary in this case, but personally I think it's good form to always declare the name of a module.) -Lars
Dec 02 2008
Thank you for your help. The problem was that I didn't know that you had to use the import statement to be able to use a class in another source file.
Dec 02 2008
Some Guy:I am busy learning D and I want to be able to use classes now. I am used to programming in C# where it does everything for you and you don't have to think about this kind of thing so I now have no idea how to compile a program from the command line that uses a class in another source file.
The good thing of D is that with just a little push it can become as handy as C# in this regard :-) The LDC compiler may grow the ability to find and load modules by itself. In the meantime you can use a tool like "bud" (or another one named rebuild) to do that for you. This is bud: http://www.dsource.org/projects/build/wiki Bye, bearophile
Dec 02 2008
On Tue, 2 Dec 2008 09:28:53 +0000 (UTC), Some Guy wrote:I am busy learning D and I want to be able to use classes now. I am used to programming in C# where it does everything for you and you don't have to think about this kind of thing so I now have no idea how to compile a program from the command line that uses a class in another source file. I have a source file called MyProgram.d which contains the main program and I have a file called MyClass.d that contains a class called MyClass. I want to be able to create an instance of MyClass in the main program but I don't know what to type to compile it the command line. This is what I have tried so far which doesn't work: dmd MyProgram.d MyClass.d Thanks in advance for your help.
Seeing that you didn't show us your code, I took the liberty of writing some example code... ---------- myprogram.d --------- module myprogram; // Tell the compiler that this file needs to know // about what is in the file 'myclass.d' import myclass; import std.stdio; // Need this to use writefln(); void main() { // Create an instance of the class. MyClass inst = new MyClass(); // Invoke a method in the instance. writefln("First %s", inst.A_Method()); // Create another instance of the class. MyClass yai = new MyClass(5); // Invoke a method in the instance. writefln("Second %s", yai.A_Method()); } --------- end of file ------------- ---------- myclass.d --------- module myclass; class MyClass { int SomeAttribute; // A class constructor this() { SomeAttribute = 1; } // Another class constructor this(int InitData) { SomeAttribute = InitData; } // A method int A_Method() { return SomeAttribute; } } --------- end of file ------------- The line to compile these ... dmd myprogram myclass When running the program 'myprogram' you should get ... c:\>myprogram First 1 Second 5 -- Derek Parnell Melbourne, Australia skype: derek.j.parnell
Dec 02 2008









Some Guy <me dontspamme.com> 