我曾经看过一次,但是我不记得如何使它再次工作。假设我有三节课:

class CRoot { ... };

class CLevelOne { ... };

class CLevelTwo { ... };


现在,我有了main函数,在这里我想通过使用以下语法进行更深入的介绍:

int main (void)
{
  CRoot myRoot ("This is root.");
  myroot.AddLevelOne("This is level one.").AddLevelTwo("This is level two.");
}


因此,我的课程的最终结构如下所示:

+- This is root.
|+- This is level one.
||+- This is level two.


如何实现它,以便可以使用语法something.Method1().Method2().MethodN(). ...;

最佳答案

尝试这个:

struct Level2
{
    // See class Level1 below
};

struct Level1
{
    std::string               m_name;
    boost::shared_ptr<Level2> p_level2;
    Level1(const std::string name)
        : name(m_name)
    { ; }

    Level2& add_level_two(const std::string& name)
    {
      p_level2 = new Level2(name);
    }
};

struct Root
{
    boost::shared_ptr<Level1> p_level1;
    Level1& add_level_one(const std::string& name)
    {
      p_level1 = new Level1(name);
    }
};


再想一想,一个基类,可以更通用地创建它。同样,级别号也必须移出方法名称。

关于c++ - 类继承-堆叠方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16134484/

10-17 01:25