[過去ログ] C++相談室 part155 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
561(3): 2021/04/29(木)13:03 ID:K/HFYMcp(1/4) AAS
外部リンク:negation.hatenadiary.org
↑で、簡単に書けば、
class Book {・・・};
class Novel : public Book{・・・};
class Comic : public Book{・・・};
class Shelf { public: std::vector<Book> list; ・・・ };
Shelf g_shelf;
int main(void) {
Novel n = Novel("Hoshio wo tugumono");
Comic c = Comic("Kimetsu no Yaiba");
省13
562(1): 2021/04/29(木)13:05 ID:K/HFYMcp(2/4) AAS
>>561
すまん。間違った。正しくはこう :
int main(void) {
Novel n = Novel("Hoshio wo tugumono");
Comic c = Comic("Kimetsu no Yaiba");
Shelf s = Shelf();
s.list.push_back(n);
s.list.push_back(c);
}
563(1): 2021/04/29(木)13:10 ID:yUiVUiFp(2/3) AAS
>>561
s.list.push_back(n);のところはn(Novel)のBook部分を首チョンパしてコピーしたオブジェクトがpush_backされる
スライシングというよく知られたホラー現象
564(1): 2021/04/29(木)13:10 ID:K/HFYMcp(3/4) AAS
外部リンク:stackoverflow.com
↑によれば、やっぱり、>>561 や >>562 のようなやり方は間違いで、
std::vector<T> の T は、Bookではなく、shared_ptr<Book> のようなものを入れるべきで、
以下の様になっている。だから、>>561 や >>562 は間違いだよね?
class Instruction {・・・};
class Add: public Instruction{・・・};
typedef shared_ptr<Instruction> PInstruction;
vector<PInstruction> v;
v.emplace_back(make_shared<Add>());
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s