2017-04-16 97 views
0

请原谅我,如果这是一个容易解决的问题,我是C++的新手。合并两个字符串列表

我有一个类和主要方法:

class Test 
{ 
public: 
    static std::list<std::string> list1[]; 
}; 
std::list<std::string> Test::list1[] = { "apple", "orange", "pear" }; 

int main() 
{ 
    std::list<std::string> list2[] = { "banana", "mango", "pineapple" }; 
    Test::list1.merge(list2); 
    std::cout << list1 << endl; 
    return 0; 
} 

我要添加列表1和List2在一起,使它们输出“苹果”,“橙”,“梨”,“香蕉”,“芒果“, “菠萝”。然而,当我尝试上面的方法我得到这样一个错误:

没有合适的构造存在,从转换“为const char [24]”到“标准::列表>”

感谢任何帮助。

+1

从合并行中删除Test :: – Meccano

+1

从列表声明的末尾删除'[]'s。他们告诉C++你希望你的变量是一个'std :: list '的数组,这不是你想要的。 –

+0

@Meccano我不同意你的看法,list1在类Test中,所以你必须用'Test :: list1'声明 – 21koizyd

回答

0
#include <iostream> 
#include <list> 
#include <string> 

class Test 
{ 
public: 
    static std::list<std::string> list1; 
}; 
std::list<std::string> Test::list1 = { "apple", "orange", "pear" }; 

int main() 
{ 
    std::list<std::string> list2 = { "banana", "mango", "pineapple" }; 
    Test::list1.merge(list2); 
    for(const auto& itr : Test::list1) 
     std::cout << itr << std::endl; 
    return 0; 
} 

列表不使用运算符[]。如果你想显示列表,你必须使用itr,就像上面那样。