C++の継承について聞きたいことがあります。
基底クラスAにポインタのメンバコリジョンを書いたとします。
そしてポインタをもらう関数を作ります。
派生クラスBのInitializeでコリジョンを生成したとき
mainで基底クラス型の配列にいれてGetCollisionを呼んだときに中身は入っているのでしょうか?
下はコードです。
A
1 2 3#pragma once 4#include <memory> 5 6#include"Collision.h" 7 8 9class A 10{ 11private: 12public: 13 14 //初期化 15 virtual void Initialize() = 0; 16 17 //コリジョン 18 std::unique_ptr<Collision> m_Collision; 19 20 Collision* GetCollision() 21 { 22 return m_Collision.get(); 23 } 24}; 25
B
1#pragma once 2#include "A.h" 3 4class B :public A 5{ 6private: 7public: 8 9 //初期化 10 void Initialize() override 11 { 12 //コリジョンを生成 13 m_Collision = std::make_unique<Collision>(); 14 } 15}; 16
main
1 2#include <iostream> 3#include"A.h" 4#include"B.h" 5 6static const int OBJECT_NUM = 1; 7 8int main() 9{ 10 std::unique_ptr<A> mA[OBJECT_NUM]; 11 mA[0] = std::make_unique<B>(); 12 mA[0]->Initialize(); 13 std::cout << mA[0]->GetCollision(); 14}
回答1件
あなたの回答
tips
プレビュー