如果我用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;
}
好吧,这也是段错的一个坏例子。但是我正在学习面向对象的编程,不知道这样做是好事,也不知道该怎么做。
答案 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;
}