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

回答編集履歴

1

別コード追加

2021/08/31 04:53

投稿

fana
fana

スコア12386

answer CHANGED
@@ -38,4 +38,41 @@
38
38
 
39
39
  ClassA::TxtWriter *ClassA::ms_pTW = nullptr;
40
40
  size_t ClassA::ms_nInstance = 0;
41
+ ```
42
+
43
+ ---
44
+
45
+ [追記]
46
+ スマートポインタで強引に.
47
+ うーん…
48
+
49
+ ```C++
50
+ class ClassA
51
+ {
52
+ private:
53
+ class TxtWriter{ /*(略)*/ };
54
+
55
+ public:
56
+ //ClassA のインスタンス生成手段
57
+ static ClassA Create()
58
+ {
59
+ auto spTW = ms_wpTW.lock();
60
+ if( !spTW )
61
+ {
62
+ spTW = std::make_shared<TxtWriter>();
63
+ ms_wpTW = spTW;
64
+ }
65
+ return ClassA( spTW );
66
+ }
67
+
68
+ private:
69
+ //private ctor
70
+ ClassA( std::shared_ptr< TxtWriter > spTW ) : m_spTW(spTW) {}
71
+ //data
72
+ std::shared_ptr< TxtWriter > m_spTW;
73
+ //static
74
+ static std::weak_ptr<TxtWriter> ms_wpTW;
75
+ };
76
+
77
+ std::weak_ptr<ClassA::TxtWriter> ClassA::ms_wpTW;
41
78
  ```