【问题标题】:Trouble with function inheritance函数继承问题
【发布时间】:2015-04-23 06:57:07
【问题描述】:

我有 3 个文件 2 个头文件和一个 .CPP 文件

头文件代码 STX.H

/ search for item in the list and delete it if found 
void SeqList::Delete(const DataType& item)

我正在尝试将 Employee.CPP 文件中的姓氏变量传递给它

void SeqList::Delete(const DataType& item)
{
    lastname = item;
}

.CPP 中的错误是 lastname 未定义。

这是员工的头文件的样子

class Employee
{
private:
    string lastname;

public:
    void SeqList::Delete(const DataType& item);

这个类中的错误是“限定符必须是“Employee”的基类

我该如何解决。

我仍在尝试准确掌握如何继承事物,请耐心等待。

【问题讨论】:

  • 如果Delete函数不是Employee类的成员,为什么要在Employee类中声明呢? lastname 声明在哪里(如果有的话)?您能创建一个Minimal, Complete, and Verifiable Example 并展示给我们看吗?
  • 我认为应该这样做我认为这已经足够小了。

标签: c++ class inheritance header parameter-passing


【解决方案1】:

首先,在您的类Employee 中,lasnameprivate:只有 Employee 的成员函数可以访问它。

那么你的类定义中的限定符SeqList::有语法问题:

class Employee
{
...
public:
    void SeqList::Delete(const DataType& item);   //oops !! 
...
};

如果Delete()Employee 的成员函数,只需删除限定符即可。

如果Delete() 不是Employee 的成员,但应该是另一个类的成员(即SeqList),那么你在错误的地方定义了你的函数。您必须在 SeqList 类中声明它。但在这种情况下,lastname 会出现问题:除非将其公开,否则 SeqList 成员函数将无法访问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多