On Wednesday, 11 November 2015 at 06:37:44 UTC, Marco de Wild
wrote:
In directory.d:
using style;
This is not D. It should be giving you a compiler error. How are
you compiling? Or did you type 'using' in the post by mistake?
Anyway, what you want is:
import style;
In style.d:
module style;
(...)
public static class Style
{
'static class' has no meaning in module scope, only for inner
classes. It's not the cause of your problem though.
I'm getting the error message that the compiler can't find
source/directory.d(...) : Error: no property 'DirectoryFont'
for type 'int'.
When I change the line to actually contain the (iirc optional)
brackets, the type changes to 'Style'. Am I missing something
with regards to static classes and members in D?
Thanks in advance.
The error is likley because of a symbol conflict. Assuming that
Text is from the module dsfml.text.graphics, it has an enum type
named Style. There's an unfortunate issue in D that allows both
of the following to compile:
auto e1 = Text.Style.Regular;
_text.Style.Regular;
The latter should not be allowed, IMO, but it is what it is. So
in your case, accessing your Style class in the scope of
with(_text) is causing the compiler to find _text.Style. The
solution is to use the FQN (Fully Qualified Name) on your Style
inside the with, i.e. style.Style, or to drop the with altogether.