【发布时间】:2013-12-06 12:38:46
【问题描述】:
我有抽象类 Transaction,它包含几个普通的属性和方法和一个方法 - 行为 - 我把它做成纯虚拟的,所以从 Transaction 继承的类可以自己实现它。
我的交易.h
class Transaction abstract{
protected:
...
public:
...
virtual void behavior() = 0;
};
我认为这应该是正确的。我有 Cow 类,我想从 Transaction 继承它。
这就是我尝试的方式
class Cow : public Transaction {
public:
Cow(int p, Calendar* cal){
this->priority = p;
this->cal = cal;
}
void Behavior() {
...
do some stuff
...
}
};
问题是,每当我尝试制作 Cow 类的对象时。要么在 Main.cpp 中,要么在 Cow::Behavior 中(这基本上是我需要能够创建 Cow 对象的代码中的两个位置)我最终会出现以下错误。
error C2259: 'Cow' : cannot instantiate abstract class
这真的让我很困惑,因为我不是在尝试实例化抽象类,而是从它继承的类。我确信这是基本的东西,但我似乎无法自己解决这个问题。
顺便说一句。这就是我尝试创建 Cow 的新实例的方式。
Calendar *calendar = new Calendar();
calendar->push(0, new Cow(1, calendar));
方法 Calendar::Push 接受的地方
void Calendar::push(int t, Transaction *tr)
有什么想法吗?
谢谢!
【问题讨论】:
标签: c++ inheritance abstract-class