开发者

Namespaces with classes and structs?

Will be nice if I got 'nested members' in D language, so I have the inglorious idea to code


class Keyboard
{
    struct  Unused {
        string key1 = "Wake Up";
        string key2 = "Sleep";
        string key3 = "Power";
    }

    Unused unused;
}

int main()
{
    Keyboard kb;
    kb.unused.key1 = "Scroll Lock";

    return 0;
}

Okay, it's a bad e开发者_JAVA百科xample that segfault too. But I'm learning object-oriented programming and don't know if it's a good thing to do, or how to do.


There's nothing wrong with doing that per se, the problem here is that kb is still null. You need to create a Keyboard object:

Keyboard kb = new Keyboard();

If you don't want to type Keyboard twice, you can use auto:

auto kb = new Keyboard();

And D will automatically determine the correct type for you.

It's fairly common practice to group related objects together like that into a struct, although usually you'll want a more descriptive name than Unused (otherwise, why have the namespace?).


You can use the syntax you first suggested. Just make unused a static member. This works fine:

class Keyboard
{
    struct Unused {
         string key1 = "Wake Up";
         string key2 = "Sleep";
         string key3 = "Power";
    }

    static Unused unused;   // **This is now a static member**
}

int main()
{
    Keyboard kb;
    kb.unused.key1 = "Scroll Lock";

    return 0;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜