我编写了一个程序,允许用户输入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;
}
答案 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);
}
}