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

相关问题