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

回答編集履歴

1

間違いでした

2019/06/12 02:55

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -1,5 +1,18 @@
1
1
  こんにちは。
2
2
 
3
+ yohhoyさんのコメントを見て、全体的に間違っていたので修正します。すいません。
4
+
5
+ 元の回答の前半は正しいのですが、shared_ptr<T>にはshard_ptr<Y>の参照を受け取るコンストラクタが定義されていて、T*をY*へ変換できる(TがYの既定クラスの時も該当)なら有効に機能します。
6
+ 従って、ご提示されているようなエラーは出ない筈です。
7
+
8
+ 面倒なのでファイルを1つにまとめましたが、確かにエラーはでませんでした。
9
+ [wandbox](https://wandbox.org/permlink/eNvXNWWGzRRMVj72)
10
+
11
+ お使いのコンパイラが古い等の可能性はないでしょうか?
12
+
13
+ -----
14
+ 【元の回答】
15
+
3
16
  > 子クラスのインスタンスは親クラスの変数に代入できる
4
17
 
5
18
  その通りです。ただ、私も昔はまったことがあるのですが、`shared_ptr<ChildClass>`は、`shared_ptr<ParentClass>`の派生クラスではありません。