您好,在此先感谢您。
这是我的问题。我有这些课程:
-class Date -class Contract -class Employee -class Node -class List
所有的类都派生自这个类 BaseObject。它有这个代码:
#ifndef BASEOBJECT_H
#define BASEOBJECT_H
#include<iostream>
using namespace std;
class BaseObject{
public:
virtual string toString() const=0;
virtual BaseObject* clone() const=0;
};
ostream& operator << (ostream&, objetoBase&);
#endif /* BASEOBJECT_H */
这就是它的全部。我正在跳过运算符 << 实现。现在,我将解释这个想法
Date 类只有基本属性(int day、int month、int year)。类 Contract 有两个类 Date 指针,因此 Contract 通过组合与 Date 相关。Employee 类与一个用指针处理的 Contract 有关联。
类 Node 有两个属性:第一个是指向包含名为 Data 的 ObjectBase 实例的 Node 的指针,第二个是指向另一个名为 nextNode 的 Node 实例的指针。
类 List 处理简单列表中的节点指针。
我的问题:当我在列表中查找 Employee 并使用 Find() 函数访问 Node 中包含的数据时,它现在只显示在 BaseObject 中创建的方法!我该如何解决这个问题?我把代码留给你。第一个和当前是节点。
BaseObject * List :: find (string id) {
if (first == NULL)
return NULL;
else
if (first-> getData () -> == getId() id) //This line is underlined in compiler
return first-> getData ();
else {
current = first;
if (current-> getNextNode () == NULL)
return NULL;
else {
while (current-> getNextNode () -> getNextNode ()! = NULL && Current-> getNextNode () -> getData () -> getId ()! = id) {
current = current-> getNextNode ();}
if (current-> getNextNode () -> getData () -> getId () == id)
return current-> getNextNode () -> getData ();
else
return NULL;
}
}
}
带下划线的代码会导致错误。当我使用编译器并加上“->”符号时,它只显示 BaseObject 方法 Clone() 和 toString(),我想使用 Employees 方法,尽管它现在是一个 BaseObject 指针,其中包含一个 Employee 实例。
如果我表达得很好,请帮助我。