2017-02-19 109 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

當分配派生類的目的是基類的對象這樣

RoleCard roleCard; 
MedicCard medicCard;  
roleCard = medicCard; 

discard all of the data在派生類(也稱爲切片)。 如果你想多態行爲,使用引用或指針到基類:

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

感謝您的回答和很好的鏈接 – leon05

相關問題