排序STL列表的子类
Sorting a subclass of STL list
考虑我创建的一个名为myList
的模板化类,它基本上扩展了c++ STL中提供的std::list
对象。我已经覆盖了一些功能,如size()
, front()
和back()
,但没有触及std::list
提供的sort()
功能。
基本上,我希望能够排序myList
,考虑我的装饰器实现:
#import "myList.h"
template <typename T>
class myListDecorator : public myList<T> {
public:
myListDecorator() : m_list(myList<T>()){}
myListDecorator(const myList<T> &my_list) {
m_list = my_list.sort();
}
private:
myList<T> m_list;
};
每当我创建myList
(在这些情况下使用类型为double
的对象),我得到以下错误:
Candidate function not viable: no known conversion from 'const myList<double>' to 'std::list<double, std::allocator<double>>' for object argument
。
我是否必须在myList
中覆盖sort()
函数并实现我自己的排序才能正常工作?
一些评论指出,在这个类中实际上有两个myList
对象是多么令人困惑。我已经更新了我的代码更"正确"/"最佳实践"。它现在做了我想要它做的事情,并且更加整洁:
#include "myList.h"
template <typename T>
class myListDecorator : public myList<T> {
public:
myListDecorator() : myList<T>(myList<T>()){}
myListDecorator(const myList<T> &my_list) : myList<T>(my_list){
this->sort();
}
};
您的my_list
是const
。sort()
成员函数可以就地修改列表,而不能对常量列表进行修改。(注意sort()
的返回类型是void
)
你应该能够:
myListDecorator(const myList<T> &my_list): m_list(my_list) {
m_list.sort();
}
原因是您试图将const myList强制转换为非const类型。顺便说一句,'#import'不是标准的C/c++预处理器语句。
相关文章:
- 继承期间显示未知行为的子类
- 通过指向指针数组的指针访问子类的属性
- 用初始化列表和超类构造函数声明子类构造函数的正确方式
- C++将静态多态类自添加到子类的 constexpr 列表中
- 子类对象列表重新解释为基类对象列表?(C++11).
- SWIG C++ to Python:生成 Python 列表的子类
- C++:从两个包含子类 (typedef) 的列表创建一个列表
- 如何创建一个包含C 中的子类的类的链接列表
- 子类列表"master copies",寻找更好的设计
- 将子类列表转换为超类列表
- 从基类模板化列表中实例化子类对象
- C++传递包含子类元素的类列表
- 迭代子类列表错误
- 对 MFC 文档视图的列表视图进行子类化
- C++ 编译类的子类的时列表
- 如何调用父类类型列表的子类的方法?C++
- 为自定义对象列表使用哪个模型子类/视图
- 排序STL列表的子类
- 保留子类的中心列表,但避免静态实例
- C++不同子类的链接列表