前提・実現したいこと
昨年末からネットや書籍でC++の勉強をしており、現在は動的配列の処理で困っています。
プログラミングビギナーです。
ネットや本で3日粘ってここまで来ましたが、動的配列に対して文字型や文字列の処理を扱っている例がなく、心が折れそうです。
目的としては名簿を作成したいです。
名簿への登録人数をコンストラクタで指定し、クラス関数で名前の入力、出力を実装したいです。
###発生している問題・エラーメッセージ
30行目
error: no type named ‘type’ in ‘struct std::enable_if<false, std::basic_ostream<char>&>’
51行目
error: no match for ‘operator=’ (operand types are ‘__gnu_cxx::__alloc_traits<std::allocator<std::vector<char> > >::value_type {aka std::vector<char>}’ and ‘const char [7]’)
該当のソースコード
1 #include<iostream>
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<vector>
5
6 using namespace std;
7
8 class StudentList
9 {
10 private:
11 int a;
12 public:
13 int num;
14 int b;
15 vector<vector<char> >student;
16 StudentList();
17 int input_name(int b);
18 int show_name(int c);
19 };
20
21 StudentList::StudentList()
22 {
23 cout << "登録する人数を指定してください" << endl;
24 cin >> num;
25 }
26
27 int StudentList::input_name(int b)
28 {
29 cout << b << "番目に登録する名前を入力して下さい" << endl;
30 cin >> student[b];
31 }
32
33 int StudentList::show_name(int c)
34 {
35 if(c < num)
36 {
37 cout << c << "番目の名前は" << student[c] << endl;
38 }
39 else
40 {
41 cout << "欠番" << endl;
42 }
43 }
44
45 int main(void)
46 {
47 StudentList list;
48 list.student.resize(10);
49 list.student[0].resize(15);
50
51 list.student[0] = "名前";
52
53 for(int i = 1;i<=list.num;i++)
54 {
55 list.student[i].resize(15);
56 list.input_name(i);
57 }
58
59 while(1)
60 {
61 cout << "番号を入力して下さい" << endl;
62 cout << list.b;
63 if(list.b > list.num || list.b < 1)
64 {
65 cout << "番号は1以上かつ" << list.num << "以下" <<endl;
66 break;
67 }
68 else
69 {
70 list.show_name(list.num);
71 }
72 }
73 return 0;
74 }
c++
試したこと
strcpy(student[0],"名前");
補足情報(FW/ツールのバージョンなど)
VirtualBox
Ubunts(64bit)
コンパイラのバージョン,7
回答3件
あなたの回答
tips
プレビュー