回答編集履歴

4

コメント削除

2020/08/08 11:01

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -48,8 +48,6 @@
48
48
 
49
49
 
50
50
 
51
- public:
52
-
53
51
  Test():array{} { }
54
52
 
55
53
  };
@@ -58,11 +56,7 @@
58
56
 
59
57
  int main() {
60
58
 
61
-
62
-
63
59
  const size_t array_size = 10;
64
-
65
- // class Testで作った配列(0で初期化されていない出力となる)
66
60
 
67
61
  Test<array_size> test;
68
62
 

3

コード修正

2020/08/08 11:01

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  Test<array_size> test;
68
68
 
69
- for (size_t i = 0; i < array_size; i++) {
69
+ for (size_t i = 0; i < test.MAX; i++) {
70
70
 
71
71
  std::cout << test.array[i] << " ";
72
72
 

2

コード追記

2020/08/08 10:52

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -27,3 +27,53 @@
27
27
  }
28
28
 
29
29
  ```
30
+
31
+ ---
32
+
33
+ `vector`も`new`も使わないならtemplateですかね。
34
+
35
+ ```C++
36
+
37
+ #include <iostream>
38
+
39
+ template<size_t size>
40
+
41
+ class Test {
42
+
43
+ public:
44
+
45
+ enum {MAX = size};
46
+
47
+ long long int array[MAX];//sizeでもいいが後から要素数を使うかもしれないので一旦MAXに入れておく
48
+
49
+
50
+
51
+ public:
52
+
53
+ Test():array{} { }
54
+
55
+ };
56
+
57
+
58
+
59
+ int main() {
60
+
61
+
62
+
63
+ const size_t array_size = 10;
64
+
65
+ // class Testで作った配列(0で初期化されていない出力となる)
66
+
67
+ Test<array_size> test;
68
+
69
+ for (size_t i = 0; i < array_size; i++) {
70
+
71
+ std::cout << test.array[i] << " ";
72
+
73
+ }
74
+
75
+ std::cout << std::endl;
76
+
77
+ }
78
+
79
+ ```

1

指摘追加

2020/08/08 10:41

投稿

SHOMI
SHOMI

スコア4079

test CHANGED
@@ -15,3 +15,15 @@
15
15
  ```
16
16
 
17
17
  としても確保されません。
18
+
19
+ その為以下は範囲外アクセスとなります。
20
+
21
+ ```C++
22
+
23
+ for (int i = 0; i < array_size; i++) {
24
+
25
+ std::cout << test.array[i] << " ";
26
+
27
+ }
28
+
29
+ ```