我的问题是如何将列表从一个班级复制到另一个班级?
我会尝试:
list<int> GetList();
list<int> CSolid::GetList()
{
return list<int>(List);
}
然后
list<int> NewList = Class::GetList();
我会这样尝试,但是我不确定这是否正确。有更好的解决方案吗? (如果这是错误的话,正确的方法是什么?
答案 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;
}