我无法编译使用类和列表的程序

时间:2017-04-01 02:32:25

标签: c++ list function class

我编写了一个程序,允许用户输入3个名字,然后显示名称列表。

我无法编译这个程序。错误消息显示“错误:'input'中的成员'list'请求,这是非类型'Name()'   input.list(); “

我不明白我做错了什么。

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

class Name
{
    std::list<string> namelist;
    public:
    Name();
    void list();
};

Name::Name()
{
    int i;
    string input[i];
    for(i=0; i<3; i++)
    {

        cout<<"Insert name: "<<input[i]<<endl;
        namelist.push_front(input[i]);
    }

}

void Name::list()
{

    for (std::list<string>::iterator NL = namelist.begin(); NL !=  namelist.end(); NL++)
    std::cout << *NL << ' ';
    std::cout << '\n';
}

int main()
{

    Name input();
    input.list();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

main()中,Name input();不是对象的定义,应该是:

Name input;

我认为你想在Name的构造函数中做的是:

Name::Name()
{
    const int SIZE = 3;
    string input[SIZE]; // size of array should be const
    for (int i = 0; i<SIZE; i++)
    {
        cout << "Insert name: " << endl;
        cin >> input[i];
        namelist.push_front(input[i]);
    }
}

可以改进。由于input仅用于存储临时值,因此无需使用数组:

Name::Name()
{
    const int SIZE = 3;
    string input; // only stores temporary value, no need to use array
    for (int i = 0; i<SIZE; i++)
    {
        cout << "Insert name: "  << endl;
        cin >> input;
        namelist.push_front(input);
    }
}