如何将列表从一个班级复制到另一个班级

时间:2019-12-28 18:42:18

标签: c++ list

我的问题是如何将列表从一个班级复制到另一个班级?

我会尝试:

list<int> GetList();

list<int> CSolid::GetList()
{
    return list<int>(List);
}

然后

list<int> NewList = Class::GetList();

我会这样尝试,但是我不确定这是否正确。有更好的解决方案吗? (如果这是错误的话,正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

在C ++中使用内置数据结构的好处是,当使用基本类型(如int / floats等)时,它们大多数都能按您希望的那样工作。
我可能会通过以下方式使用std :: list预定义的复制构造函数:

class SomeClassWithIntList
{
    public:
    SomeClassWithIntList(const std::list<int>& _inputList = {})
    {
            m_NumberList = std::list<int>(_inputList);
    }
    void PrintList()
    {
        for(auto i : m_NumberList)
        {
            std::cout << i << " ";
        }
        std::cout << std::endl;
    }

    std::list<int> GetList()
    {
        return m_NumberList;
    }

    private:
    std::list<int> m_NumberList;
};

int main()
{
    // Use class constructor to input a given list to the std::list<int>
    // constructor
    SomeClassWithIntList test1 = SomeClassWithIntList({1,2,3});
    test1.PrintList();
    // Here we created test2 with an empty list
    SomeClassWithIntList test2 = SomeClassWithIntList();
    test2.PrintList();
    // We can use the constructor to copy the list
    test2 = SomeClassWithIntList(test1.GetList());
    test2.PrintList();
    return 0;
}