错误C2440:'=':无法从'std :: list <std :: string,std :: allocator <_ty>&gt;转换*'to'std :: string *'</std :: string,std :: allocator <_ty>

时间:2014-11-16 18:40:52

标签: c++ compiler-errors

我目前正在学习如何在C ++中使用列表(以及一般的C ++),方法是将字符串值输入到列表中,在do-while循环中,然后在for循环中从列表中打印它们,但是遇到错误:

error C2440: '=': cannot convert from 'std::list<std::string,std::allocator<_Ty>> *'
                                   to 'std::string*'

错误是指这一特定行:

output = &container[k];

我不知道如何解决这个问题,或者我做错了什么。我也不知道我对列表的理解是否有问题,或者我是否错误地使用了指针。

如果有任何答案可以尽可能简单地表达,我将不胜感激,谢谢。

其余代码:

#include <iostream>
#include <string>
#include <list>
using namespace std;

void main()
{

int i = 0;
list<string> container[10];
string input, *output;  

do{
    cout << "enter a value for container location " << i << endl;
    cin >> input;
    container[i].push_back(input);
    i++;
}while (i < 10);

for (int j = 0, k = 0; j < 10; j++)
{
    output = &container[k];
    cout << "Value of container location " << j << " = " << *output << endl;
    k++;
}
}

2 个答案:

答案 0 :(得分:0)

根据您的代码,您明确指出container的类型为vector<string>而不是[10]或仅string(同时保持数组规范)。

答案 1 :(得分:0)

Pignaut,     您正在声明一个String列表的数组(大小为10),因此,该数组的每个元素都是一个字符串列表。这就是为什么这个错误。    但是,我想你要声明一个字符串列表。