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

回答編集履歴

1

追記

2021/06/11 07:39

投稿

fana
fana

スコア12206

answer CHANGED
@@ -8,4 +8,26 @@
8
8
  というような話です.
9
9
  つまり,`new Reader()` として,デフォルトコンストラクタを使う形で Reader 型オブジェクトを生成しようとしています.
10
10
  …んだけども,Reader型にはデフォルトコンストラクタが無い(無い理由は質問文内のリンク先で述べられていますから繰り返しません)ので,
11
- 「デフォルトコンストラクタが無いんですが???」とコンパイラが言っているわけです.
11
+ 「デフォルトコンストラクタが無いんですが???」とコンパイラが言っているわけです.
12
+
13
+ ---
14
+
15
+ さて,
16
+ 「じゃあ問題解決のためには,デフォルトコンストラクタ Reader::Reader() を用意すればいいのか?」
17
+ っていうのは,あなたの作っている物次第です.
18
+
19
+ というのは,そもそも
20
+
21
+ > Reader(SceneChangedListener* _impl, const Parameter& _parameter);
22
+
23
+ という,引数ありのコンストラクタは,Reader型のオブジェクトの構築にはこれらの引数が**必要だから**用意されているのだと考えられるからです.
24
+
25
+ なので,もしも Reader型オブジェクトの構築にこれらの引数情報が絶対に必要なのであれば,
26
+ Reader::Reader() を無理矢理追加してそれを用いてオブジェクトを構築しても,結局「本来あるべき構築手順を経ない,内容がまともでない状態の」オブジェクトになってしまうでしょう.
27
+ それではまともに使えないでしょうから**結局ダメ**です.
28
+
29
+ おそらく,
30
+ `m_reader = make_shared<Reader>( ここに引数を与える ); //生成時にまともな引数を与える`
31
+ というのが,わかりやすい修正の方向でしょう.
32
+
33
+ ※もちろん「いやいや,別に構築時に情報を与えなくても良い性質のものなのだよ」という話なのであれば,妥当な Reader::Reader() を追加する,という方向もアリです.