我曾经看过一次,但是我不记得如何使它再次工作。假设我有三节课:
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/