结构中的类

时间:2012-06-26 10:06:08

标签: c++ class structure

我有两个问题。

  1. 我知道可以在结构中声明类对象。但从设计的角度来看,这样做是否合乎道德呢?

  2. 在我的场景中,我有一个包含大量成员元素的结构,我也希望包含一个类对象。我有另一个问题。如果我memset()整个结构,类句柄也被重置。所以,我检查没有类对象的结构的其余部分的大小,并在我调用memset()时减去它,以解决这个问题。 (请注意,我在这里使用STL类'队列'。我不能在对象上使用sizeof()运算符,因为它没有重载。)

  3. 但这完全是一种不可接受的方式吗?你能为这个问题提出一些解决方案吗?

3 个答案:

答案 0 :(得分:9)

  • struct = class(默认可见性除外)。

  • 如果你有“大量成员”,你可能做错了什么,改变你的设计,否则就变得难以处理。

  • 在有意义的情况下嵌套类和/或结构是绝对可以的。例如,为实现细节定义嵌套类是很常见的(因此linked_list类可以有node成员类。

  • 没有“类对象”这样的东西,也不清楚你的意思。

  • 不要使用memset - 你可能不需要它,只需使用普通的构造函数和赋值。

  •   

    我不能在对象

    上使用sizeof()运算符

    错了,你可以使用它。

答案 1 :(得分:1)

解决方案是避免使用类和结构的memset,并使用构造函数。在C ++ 11中,您也可以在各种条件下使用初始化列表。

答案 2 :(得分:0)

c ++中的类和结构之间没有太大的功能差异。在c ++中存在的结构只是为了向后兼容C语言。所以在结构体中有一个类对象是可以的。但是我通常更喜欢仅具有getter和setter成员变量的结构。我不使用struct中的任何函数来进行数据处理。如果我需要那么我将使用课程。