gpt4 book ai didi

c++ - 继承自c++标准库List类,增加更多方法

转载 作者:行者123 更新时间:2023-11-28 03:27:08 25 4
gpt4 key购买 nike

我需要在 C++ 的类中添加一些方法。我正在使用名为“Super_list”的继承创建一个新类,它将继承列表的所有方法并允许我添加自己的方法。

#ifndef SUPER_LIST_H
#define SUPER_LIST_H

#include "my_containter.h"
#include <list>
using namespace std;

class My_Container;

class Super_list: public list<My_Container>
{
public:
void new_func1();
void new_func2();
void new_func_3();
};
#endif

这是我使用新创建的类的地方:

#ifndef my_container_H
#define my_container_H

#include <list>
#include "super_list.h"
using namespace std;

class Super_list;

class My_container
{
private:
Super_list buddy;
};
#endif

我遇到了一堆与未正确完成继承相关的错误。对于完成此任务的任何帮助或其他想法,我将不胜感激。

谢谢:)

最佳答案

你有一个循环依赖:MyContainer需要了解 Super_list反之亦然。您需要找到一种方法来打破这种依赖性。请注意,在您的代码中,前向声明是完全多余的。

另请注意标准库容器 aren't designed to be inherited from publicly .

关于依赖性,您至少需要修改一个类,这样它就不需要另一个类的完整定义。假装一下公开继承自std::list可以,那么唯一的选择就是 My_Container不需要 SuperList 的完整定义通过让它持有一个(最好是智能的)指针:

class My_container
{
private:
Super_list* buddy;
};

这将允许您删除 super_list.h包括。

一个不相关的警告:放using namespace std不好在头文件中,因为它会将 using 指令强加于所有直接或间接包含您的头文件的代码。这可能会导致各种麻烦。我通常会走得更远,说你不应该在任何地方使用它。在这一点上,并非所有人都同意我的看法。

关于c++ - 继承自c++标准库List类,增加更多方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com