【发布时间】:2021-07-02 19:14:44
【问题描述】:
我在通过我的类传递两条数据时遇到问题,特别是 ID 和 Name。我知道如果不通过以前的父类就无法调用基类构造函数,但我正在努力弄清楚为什么这不起作用,我是否需要一直使用构造函数,或者我可以在末尾添加它我的类创建喜欢基类吗?
提前致谢。
class CEmployee
{
private:
char m_name[30];
char m_id[30];
//virtual float Pay() { return 0;}; // virtual function
virtual float Pay() = 0; // pure virtual function
public:
CEmployee(char name[], char id[])
{
strcpy_s(m_name, name);
strcpy_s(m_id, id);
}
CEmployee()
{
strcpy_s(m_name, "");
strcpy_s(m_id, "");
}
void PrintCheck()
{
cout << m_name << " " << Pay() << endl;
}
};
class CFulltimeEmployee : public CEmployee
{
protected:
static float m_benefitcost;
public:
CFulltimeEmployee()
{
}
CFulltimeEmployee(char name[], char id[]) : CEmployee (name, id)
{
m_benefitcost = 100;
}
};
float CFulltimeEmployee::m_benefitcost = 100;
class CHourlyFTEmployee : public CFulltimeEmployee
{
private:
float m_rate;
float m_hours;
public:
CHourlyFTEmployee()
{
}
CHourlyFTEmployee(const char name[], const char id[], float rate, float hours) : CFulltimeEmployee
(name, id)
{
m_rate = rate;
m_hours = hours;
}
float Pay()
{
return m_rate * m_hours - m_benefitcost;
}
};
错误
Error (active) E0289 no instance of constructor "CFulltimeEmployee::CFulltimeEmployee" 与参数列表匹配
错误 C2664 'CFulltimeEmployee::CFulltimeEmployee(char [],char [])': 无法将参数 1 从 'const char []' 转换为 'char []' Project9
【问题讨论】:
-
您展示的代码有哪些问题?如果您遇到构建错误,请将完整且完整的错误输出复制粘贴到问题中。
-
在 C++ 中,你真的,真的应该使用
std::string并尽一切努力避免char*,尤其是在你有这些绝对微小的缓冲区大小为 29 的情况下。 -
只是关于术语的一点:这不是多重继承。多重继承是指具有多个直接基的类。
struct a {}; struct b {}; struct c : a, b {};. -
不要使用破坏性的编辑来删除问题的文本;它对未来的读者没有帮助。如果您不想保留问题,请将其标记为删除。回滚您的编辑。
标签: c++ inheritance constructor