gpt4 book ai didi

c++ - 对 STL 列表的子类进行排序

转载 作者:行者123 更新时间:2023-11-30 04:04:46 25 4
gpt4 key购买 nike

考虑我创建的一个名为 myList 的模板化类, 它基本上扩展了 std::list C++ STL 中提供的对象。我已经覆盖了一些功能,例如 size() , front()back()但没碰过sort() std::list 提供的功能.

基本上,我希望能够对 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 .

我是否必须覆盖 sort()myList 中发挥作用并实现我自己的排序以使其工作?

编辑:

一些评论指出实际上有两个 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_listconstsort() 成员函数就地修改列表,而不能对常量列表执行此操作。 (注意 sort() 的返回类型是 void。)

您应该能够:

myListDecorator(const myList<T> &my_list): m_list(my_list) {
m_list.sort();
}

关于c++ - 对 STL 列表的子类进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23600681/

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