在构造函数中传递子类作为参数
问题描述:
我是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()
{
}
答
当分配派生类的目的是基类的对象这样
RoleCard roleCard;
MedicCard medicCard;
roleCard = medicCard;
你discard all of the data在派生类(也称为切片)。 如果你想多态行为,使用引用或指针到基类:
Player(RoleCard& rolecard);
...
MedicCard medicCard;
Player demoPlayer(medicCard);
+0
感谢您的回答和很好的链接 – leon05
有什么特别的错误?请逐字添加错误文字到您的问题([编辑])。 –
这不是你的错误。复制/粘贴编译器的原始输出。如果这是您的错误,您向我们展示的代码不是您要编译的代码;请提供[mcve]并向我们展示_that_给出的输出。 –