【问题标题】:Class data member struct : accessing struct members类数据成员结构:访问结构成员
【发布时间】:2019-05-24 02:13:49
【问题描述】:

我创建了一个名为 Foo 的简单类,其中包含一个数据成员 Bar,它是一个结构体。

class Foo
{
  public :
  struct Bar {
    int a;
  };
};

我希望能够从我在类中定义的函数或从驱动程序文件访问结构中的成员,但我不确定如何。注意:我已将 Bar 声明为公共成员,因为我试图在不使用 get 函数的情况下直接访问成员。我的疯狂是有方法的,但我稍后会谈到,所以请接受我希望该结构现在是公开的。

这是一个大型程序的非常精简的版本,因此请原谅其简单性。

【问题讨论】:

  • Bar 不是数据成员,它是一个类定义。你需要Bar bar; 之类的东西才能让bar 成为Foo 的成员

标签: c++ class struct member


【解决方案1】:

我创建了一个名为 Foo 的简单类,其中包含一个数据成员 Bar,它是一个结构体。

不是真的。 Foo 根本不包含任何数据成员。它只是定义了一个名为Foo::Bar 的类型。 Foo::Bar 类型的对象有一个名为 aint 数据成员,但 Foo 对象本身没有任何 Barint 子对象。

如果您确实希望在每个 Foo 中都有一个 Bar 类型的对象,则需要使用某个名称声明该成员:

class Foo
{
  public :
  struct Bar {
    int a;
  };
  Bar bar;
};

这会让你做这样的事情:

void test() {
    Foo f;
    f.bar.a = 5;
}

【讨论】:

  • 我在发布消息大约 10 秒后意识到我犯了这个错误:/ 谢谢,我觉得自己很笨。
猜你喜欢
  • 2017-06-11
  • 1970-01-01
  • 2023-03-22
  • 2013-05-31
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多