Struct "inheritance"
Vidar Wahlberg
canidae at exent.net
Sun Feb 5 06:13:25 PST 2012
On 2012-02-05 14:16, Simen Kjærås wrote:
> On Sun, 05 Feb 2012 11:58:40 +0100, Vidar Wahlberg <canidae at exent.net>
> wrote:
>> Also, is this really ambiguous? Are there any cases where you can have
>> a module name followed by a parentheses, i.e. "<module>("?
>
> Not that I know.
Possibly something that could make the language slightly more newbie
friendly here, then. For now I'll just keep the filenames in lowercase
so i "import struct;" rather than "import Struct;" (I see the norm for D
is to keep the filenames in lowercase, might as well follow it).
Adding a note about GDC (4.6.2) here:
It appears like it ignores "module <name>;" and always use the filename
for module name (or I've misunderstood what "module" is used for). If I
create a file "Foo.d" which contains "module foo;", then in any other
file I wish to include module "foo" in I must write "include Foo;", not
"include foo;".
>> I'm using gdc-4.6 (Debian 4.6.2-4).
>
> Ah. That's the equivalent of DMD 2.054. I don't have that installed, but
> it may be that this feature was not added until after that.
>
> Fix: install GDC 4.6.1: https://bitbucket.org/goshawk/gdc/downloads
I'm running GDC 4.6.2, not 4.6.0 (I just pasted output from "gdc-4.6
--version", I could've made it clearer), downgrading probably won't help me.
> Workaround: Use a templated opEquals:
>
> struct Struct {
> int baz;
> bool opEquals()(const Struct s) const {
> return baz == s.baz;
> }
> }
>
> Hope this works.
Yes, it does. I have to read a bit about templating as I don't
understand exactly what that "()" means, but it did solve my problem,
thanks!
More information about the Digitalmars-d-learn
mailing list