teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

d

2020/11/27 11:47

投稿

tiitoi
tiitoi

スコア21960

title CHANGED
File without changes
body CHANGED
@@ -53,4 +53,54 @@
53
53
  std::cout << MyClass::table1[3] << std::endl;
54
54
  }
55
55
 
56
+ ```
57
+
58
+ ## 解決方法
59
+
60
+ 教えていただいた内容をもとに以下のように修正しました。
61
+ ご回答ありがとうございました。
62
+
63
+ ```cpp
64
+ #include <algorithm>
65
+ #include <iostream>
66
+ #include <vector>
67
+
68
+ class MyClass
69
+ {
70
+ public:
71
+ MyClass()
72
+ {
73
+ initliaze();
74
+ }
75
+
76
+ // プログラム起動時に呼び出してほしい関数
77
+ static void initliaze()
78
+ {
79
+ if (!table1.empty())
80
+ return; // 初期化済み
81
+
82
+ make_table(table1);
83
+ make_table(table2);
84
+ }
85
+
86
+ static void make_table(std::vector<size_t> &table)
87
+ {
88
+ table.resize(10);
89
+ for (size_t i = 0; i < 10; i++)
90
+ table[i] = i;
91
+ }
92
+
93
+ static std::vector<size_t> table1;
94
+ static std::vector<size_t> table2;
95
+ };
96
+
97
+ std::vector<size_t> MyClass::table1;
98
+ std::vector<size_t> MyClass::table2;
99
+
100
+ static MyClass inst;
101
+
102
+ int main(int, char **)
103
+ {
104
+ std::cout << MyClass::table1[3] << std::endl;
105
+ }
56
106
  ```