【发布时间】:2011-07-01 06:36:40
【问题描述】:
好的,这是我的问题。我有以下课程:
class Job {
bool isComplete() {}
void setComplete() {}
//other functions
};
class SongJob: public Job {
vector<Job> v;
string getArtist() {}
void setArtist() {}
void addTrack() {}
string getTrack() {}
// other functions
};
// This were already implemeted
现在我想实现一个 VideoJob 并从 Job 派生它。但这是我的问题。我还有以下功能,它被设置为仅适用于 SongJob:
void process(SongJob s)
{
// not the real functions
s.setArtist();
..............
s.getArtist();
.............
s.getArtist();
...............
s.setArtist()
}
在这里,我只想表明该函数仅使用派生对象方法。因此,如果我有另一个从 Job 派生的对象,我需要将参数更改为 Job,但是编译器将不知道这些函数,我不知道要为每个人测试它是什么类型的对象,然后将其转换为可以调用正确的函数。
所以可以把所有的函数都放在基类中,因为那样我就没有问题了,但是我不知道这是否正确OOP,如果一个类处理歌曲而另一个处理视频,我好的 oop 意味着有 2 个类。
如果我没有说清楚,请说清楚,我会尝试更好地解释。
简而言之,我想使用多态性。
【问题讨论】:
标签: c++