2017-02-19 8 views
-1

私はC++を初めて使っていますが、私はRoleCardの引数を取るPlayerのインスタンスを作成しようとしています。私は、Driver.cppにRoleCardを継承したMedicCardを渡すことができるようにしたいと考えています。しかし、私はこれを行う適切な方法を見つけることができないようです。私の目標は、変数roleCardを動的に変更して新しいPlayerインスタンスを作成できるようにすることです。子クラスをコンストラクタのパラメータとして渡す

Driver.cpp

RoleCard roleCard; 
MedicCard medicCard;  
roleCard = medicCard; 

Player demoPlayer(roleCard); 

Player.h

#pragma once 
#include "RoleCard.h" 
#include <string> 
#include <vector> 

class Player 
    { 
    public: 
     Player(); 
     Player(RoleCard rolecard);    
    }; 

Player.cpp

#include "stdafx.h" 
#include "Player.h" 
#include<string> 

using namespace std; 

Player::Player() 
{ 
} 

Player::Player(RoleCard roleCard) 
{  
} 

RoleCard.h

#pragma once 

class RoleCard 
{ 
public: 
    RoleCard(); 
}; 

class MedicCard: public RoleCard 
{ 
public: 
    MedicCard(); 
}; 

RoleCard.cpp

#include "stdafx.h" 
#include "RoleCard.h" 

using namespace std; 

RoleCard::RoleCard() 
{  
} 
MedicCard::MedicCard() 
{  
} 
+1

特にエラーは何ですか?あなたの質問に誤りのテキストをそのまま入力してください([編集])。 –

+0

これはあなたのエラーではありません。コンパイラからの生の出力をコピー/ペーストします。それがあなたのエラーである場合、あなたが私たちに示しているコードはあなたがコンパイルしようとしているコードではありません。 [mcve]を提供し、私たちに_that_が与える出力を示してください。 –

答えて

0

あなたは(そうでなければスライスとして知られる)派生クラスでdiscard all of the dataこの

RoleCard roleCard; 
MedicCard medicCard;  
roleCard = medicCard; 

ような基底クラスのオブジェクトを派生クラスのオブジェクトを割り当てます。 多態的な動作が必要な場合は、基本クラスへの参照またはポインタを使用します。

Player(RoleCard& rolecard); 
... 
MedicCard medicCard; 
Player demoPlayer(medicCard); 
+0

あなたの答えと素晴らしいリンクに感謝します – leon05

関連する問題