从嵌套列表的成员,我如何调用外部数据

时间:2011-01-27 08:50:54

标签: c++

struct object {
      string sent ;
      ...// other data declaration
      struct nested {
            void read ( void ) ;
      };
};

在读取功能中,如何填写发送?换句话说,我该如何调用发送

编辑:

我知道这是一个微不足道的问题,但我不太了解嵌套结构,你能不能给任何网站推荐

2 个答案:

答案 0 :(得分:5)

嵌套类只需要一个指向封闭类的指针或引用。这可以通过嵌套类的构造函数传递。

struct nested 
{
  nested(object& obj) : m_obj(obj) { }

  object& m_obj;
};

然后,您可以通过object::sent参考变量访问m_obj

答案 1 :(得分:2)

您需要对结构进行一些更改:

struct object {
      std::string sent ;

      struct nested {
            void read ( object& obj ) { obj.sent = "FOO"; }
      } bar;
};

首先,如果read函数是非静态的,那么nested中需要object的实例(或者在外面,我懒得把它放在里面),然后你需要将object的实例传递给该函数..然后您可以调用

object foo;
foo.bar.read(foo); // this will set it

编辑:如果nested中有多个访问object的函数,则在object的ctor中,自行构建bar*this ),就像查尔斯在答案中所说,nested引用了“父实例”。