C++ C++;无法实例化Abstract类';孩子
我有一个抽象类事务,它包含两个普通属性和方法,还有一个方法-行为-我将其设置为纯虚拟的,因此从事务继承的类可以自己实现它 我的交易C++ C++;无法实例化Abstract类';孩子,c++,inheritance,abstract-class,C++,Inheritance,Abstract Class,我有一个抽象类事务,它包含两个普通属性和方法,还有一个方法-行为-我将其设置为纯虚拟的,因此从事务继承的类可以自己实现它 我的交易 class Transaction abstract{ protected: ... public: ... virtual void behavior() = 0; }) 我认为这应该是正确的。我有一个Cow类,我想从事务继承它 我就是这样做的 class Cow : public Transaction { public:
class Transaction abstract{
protected:
...
public:
...
virtual void behavior() = 0;
})
我认为这应该是正确的。我有一个Cow类,我想从事务继承它
我就是这样做的
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++区分大小写。您在基类中用小写字母“b”拼写行为,在派生类中用小写字母“b”拼写行为。您在基类中声明了纯虚函数
行为
,在派生类中声明了不相关的函数行为
。这不会覆盖纯函数,因为它有不同的名称。C++是区分大小写的。因为您没有重写类Box中的纯虚函数行为(行为被视为不同函数),所以BoW也变成抽象类。REST是C++语义, < P>首先C++没有关键字摘要。您似乎正在使用C++/CLI。请尝试以下定义
ref class Transaction abstract{
protected:
...
public:
...
virtual void behavior() = 0;
};
ref class Cow : public Transaction {
public:
Cow(int p, Calendar* cal){
this->priority = p;
this->cal = cal;
}
void behavior() override {
...
do some stuff
...
}
};
在C++之前,C++还具有“<代码> > /Cult>说明符,以捕获这些键入之前:-谢谢迈克。天哪,我真蠢,对不起,我完全忽略了你的时间。