【发布时间】:2016-07-23 04:41:09
【问题描述】:
我有这个基类
class Object {
...
public:
virtual void move() = 0;
virtual void move(string) = 0;
virtual void powerOn() = 0;
virtual void powerOff() = 0;
virtual void speak() = 0;
};
这将是不同类的基类
class Electronics : public Object {
...
public:
virtual void powerOn();
virtual void powerOff();
};
void Electronics::powerOn() { ... }
void Electronics::powerOff() { ... }
class Phone : public Electronics {
...
public:
};
现在,如果我想创建一个对象 Phone,它使用 powerOn() 和 powerOff() 方法。其他三种方法我不需要。
Object *obj = new Phone;
但这可能会给我一个错误提示
undefined reference to move()
undefined reference to move(string)
undefined reference to speak()
我的问题是,我怎样才能避免这个错误。我不需要 Phone 的这些功能,但它需要我对它们做一些事情。我怎样才能克服这个错误?
谢谢
【问题讨论】:
-
您可以从 Object 中删除这些函数,并在您真正需要它们的较低子类中使用它们
-
我需要稍后做类似的事情: Object *phone = new Phone。后来,当我调用 phone->powerOn() 时,它会说 Object 类中没有 powerOn() 方法
标签: c++ inheritance abstract-class pure-virtual