Error: no property "someFont" for type int
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Nov 10 23:46:29 PST 2015
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.
More information about the Digitalmars-d-learn
mailing list