具有类和结构的命名空间?

时间:2010-10-05 06:00:32

标签: d oop

如果我用D语言得到'嵌套成员'会很好,所以我有不光彩的想法来编码


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;
}

好吧,这也是段错的一个坏例子。但是我正在学习面向对象的编程,不知道这样做是好事,也不知道该怎么做。

2 个答案:

答案 0 :(得分:3)

执行本身并没有错,这里的问题是kb仍然是null。您需要创建一个Keyboard对象:

Keyboard kb = new Keyboard();

如果您不想两次输入Keyboard,可以使用auto

auto kb = new Keyboard();

D会自动为您确定正确的类型。

将相关对象组合成一个结构体是相当普遍的做法,尽管通常你需要一个比Unused更具描述性的名称(否则,为什么要使用命名空间?)。

答案 1 :(得分:2)

您可以使用首次建议的语法。只是让未使用的静态成员。这很好用:

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;
}