将子类作为构造函数中的参数
Passing child class as a parameter in a constructor
我是C 的新手,我正在尝试创建一个播放器的实例,该实例以Rolecard的态度参数。我希望能够通过驱动程序中的rolecard的医疗卡。但是,我似乎找不到正确的方法。我的目标是能够动态更改可变rolecard以创建新的玩家实例。
驱动程序.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;
您丢弃了派生类中的所有数据(也称为切片)。如果您想要多态性行为,请使用参考或指示基准:
Player(RoleCard& rolecard);
...
MedicCard medicCard;
Player demoPlayer(medicCard);
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?