質問編集履歴

3

エラーの追記

2020/04/12 13:53

投稿

jasmine-jp
jasmine-jp

スコア15

test CHANGED
File without changes
test CHANGED
@@ -71,3 +71,11 @@
71
71
  }
72
72
 
73
73
  ```
74
+
75
+ ```error
76
+
77
+ undefined reference to `Counter::m_totalCount'
78
+
79
+ collect2.exe: error: ld returned 1 exit status
80
+
81
+ ```

2

質問の追加

2020/04/12 13:53

投稿

jasmine-jp
jasmine-jp

スコア15

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,14 @@
3
3
  静的メンバ関数の戻り値に静的メンバ変数を設定するとエラーがおきます。
4
4
 
5
5
  静的メンバ変数を戻り値に設定しているコードが見つからなかったので困っています。
6
+
7
+ また、静的と非静的の違いは
8
+
9
+ ・メインコードに書くときにクラス名をつける必要がある
10
+
11
+ ・静的関数から非静的関数は呼び出せない
12
+
13
+ 以外に何かあるのでしょうか
6
14
 
7
15
  ```問題のコード
8
16
 
@@ -31,6 +39,8 @@
31
39
  }
32
40
 
33
41
  void Counter::count(){
42
+
43
+  m_count++;
34
44
 
35
45
  m_totalCount++;
36
46
 

1

質問の変更

2020/04/12 13:41

投稿

jasmine-jp
jasmine-jp

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,80 +1,50 @@
1
- ## 質問
1
+ ##質問
2
2
 
3
- 以下問題分かりせん
3
+ 静的メンバ関数戻り値に静的メンバ変数を設定するとエラーおき
4
4
 
5
- mainの18行目ている、c1.getCount() + c2.getCount()を、クラスCounterの静的メソッによって出力できるようにプログラムを改造しなさ。その際、以下のようにクラスCounterを変更ること
5
+ 静的メンバ変数を戻り値設定しているコーが見つからなかたので困っていす。
6
6
 
7
- ##条件
8
-
9
- 1.作成する静的メンバ関数の名前は、getTotalCount()とする。(戻り値はint)
10
-
11
- 2.この関数内では、トータルのカウント回数を記録した静的メンバ変数を、m_totalCountとする。
12
-
13
- ##実行結果
14
-
15
- c1のカウント数:3
16
-
17
- c2のカウント数:1
18
-
19
- トータルのカウント数:4
20
-
21
- ##コード
22
-
23
- ```header
7
+ ```問題のコード
24
-
25
- #ifndef _COUNTER_H_
26
-
27
- #define _COUNTER_H_
28
-
29
-
30
8
 
31
9
  class Counter{
32
10
 
33
11
  private:
34
12
 
35
- // 回数
13
+ int m_count;
36
14
 
37
- int m_count;
15
+ static int m_totalCount;
38
16
 
39
17
  public:
40
18
 
41
- // コンストラクタ
42
-
43
- Counter();
44
-
45
- // リセット
46
-
47
- void reset();
48
-
49
- // カウント
50
-
51
- void count();
52
-
53
- // カウントの数
54
-
55
- int getCount();
19
+ static int getTotalCount();
56
20
 
57
21
  };
58
22
 
59
-
23
+ -----------------------------------------------------
60
24
 
61
- #endif // _COUNTER_H_
25
+ Counter::Counter() : m_count(0)
62
26
 
63
- ```
27
+ {
64
28
 
65
- ```main
29
+ m_totalcount = 0;
66
30
 
67
- #include <iostream>
31
+ }
68
32
 
69
-
33
+ void Counter::count(){
70
34
 
71
- #include "counter.h"
35
+ m_totalCount++;
72
36
 
73
-
37
+ }
74
38
 
75
- using namespace std;
76
39
 
40
+
77
-
41
+ int Counter::getTotalCount(){
42
+
43
+ return m_totalCount;
44
+
45
+ }
46
+
47
+ -----------------------------------------------------
78
48
 
79
49
  int main(){
80
50
 
@@ -84,58 +54,10 @@
84
54
 
85
55
  c2.count();
86
56
 
87
- c2.count();
88
-
89
- c2.reset();
90
-
91
- c1.count();
92
-
93
- c1.count();
94
-
95
- c2.count();
96
-
97
- cout << "c1のカウント数:" << c1.getCount() << endl;
98
-
99
- cout << "c2のカウント数:" << c2.getCount() << endl;
100
-
101
- cout << "トータルのカウント数:" << c1.getCount() + c2.getCount() << endl;
57
+ cout << "トータルのカウント数:" << Counter::getTotalCount() << endl;
102
58
 
103
59
  return 0;
104
60
 
105
61
  }
106
62
 
107
63
  ```
108
-
109
- ```func
110
-
111
- #include "counter.h"
112
-
113
-
114
-
115
- // コンストラクタ(カウント回数を0で初期化)
116
-
117
- Counter::Counter() : m_count(0)
118
-
119
- {
120
-
121
- }
122
-
123
- void Counter::reset(){
124
-
125
- m_count = 0;
126
-
127
- }
128
-
129
- void Counter::count(){
130
-
131
- m_count++;
132
-
133
- }
134
-
135
- int Counter::getCount(){
136
-
137
- return m_count;
138
-
139
- }
140
-
141
- ```