无效的抽象类型
Invalid abstract type
所以我对抽象类有问题!
这是产品。
#ifndef PRODUCT_H
#define PRODUCT_H
#include <string>
using namespace std;
class Product
{
private:
string description;
int d,m,y;
float weight;
public:
Product();
Product(string description,int d,int m,int y, float weight);
void print();
virtual bool isExpiring()=0;
};
#endif
这是产品.cpp
#include "Product.h"
#include <string>
#include <iostream>
using namespace std;
Product::Product()
{
description="";
d=0;
m=0;
y=0;
weight=0.0;
}
Product::Product(string description,int d,int m,int y, float weight)
{
this->description=description;
this->d=d;
this->m=m;
this->y=y;
this->weight=weight;
}
void Product::print()
{
cout << "Description: " << description<<endl;
cout << "Expiration date: " << d <<"/" << m << "/" << y << endl;
cout << "Weight: " << weight << endl;
}
这是短期产品。
#ifndef SHORTTERMPRODUCT_H
#define SHORTTERMPRODUCT_H
#include "Product.h"
class ShortTermProduct : public Product
{
public:
ShortTermProduct();
void Print();
bool isExpiring();
};
#endif
这是长期产品。
#ifndef LONGTERMPRODUCT_H
#define LONGTERMPRODUCT_H
#include "ShortTermProduct.h"
#include <string>
using namespace std;
class LongTermProduct
{
private:
int lifetime;
string open, open_date;
public:
LongTermProduct(int lifetime,string open,string open_date);
void print();
bool isExpiring();
};
#endif
最后这是冰箱。
#ifndef FRIDGE_H
#define FRIDGE_H
#include "LongTermProduct.h"
class Fridge : public LongTermProduct
{
private:
Product products[10];
public:
fridge();
void addShortTermProduct (ShortTermProduct p);
void addLongTermProduct (LongTermProduct p);
void printFridgeProducts();
bool isExpiring();
};
#endif
我得到的错误是这些:
- [错误] "产品"的抽象类型"产品"无效
- [错误] 无法将字段"冰箱::p产品"声明为抽象类型"产品">
任何帮助都会被篦!提前感谢!
发生此错误是因为 Product
类具有纯虚拟方法,因此应使用指针来声明它。 如果你想使用C ++固定数组大小,我建议你在这里看看std::array
std::array<Product*, 50> products;
virtual bool isExpiring()=0;
是一个纯虚函数(抽象(,因此Product
是一个抽象类。
Product products[10];
您在这里所做的是尝试创建 10 个抽象类型的对象 Product
.但是不能从抽象类创建对象。你想要的是Product
指针,这些指针可以指向派生类的指针:
Product** products = new Product*[10];
相关文章:
- E0322:不允许使用抽象类类型 " " 的对象
- C++从抽象类型定义类成员
- 分配抽象类类型 c++ xcode 的对象
- 错误 - 变量类型 "X" 是一个抽象类 - c++
- 分配抽象类类型为"CObject"的对象
- 错误消息:不允许抽象类类型 "X" 的对象:纯虚拟"Y"没有覆盖器
- 错误:不允许使用抽象类类型的对象
- 我在代码中有一个错误,错误是:(智能感知:不允许抽象类类型"HourlyWorker"的对象:)
- OOP - 抽象类类型,初始化基类和派生类中的变量
- 是否可以通过模板指定抽象类变量类型
- 如何在不指定模板类型的情况下声明通用抽象类的对象
- 创建一个抽象类类型的集合,shared_ptr的抽象类向量
- 意外地'instantiate'使用大括号初始值设定项的抽象类类型?
- 尝试定义派生自抽象类的类类型的对象时出错
- 纯抽象类和派生类型的实例化
- 在抽象类中,可以使用抽象类A的类型创建一个静态字段
- C++错误:不允许使用抽象类类型的对象
- 在从抽象类继承的模板类中正确使用未定义的类型
- 使用 std::vector 时抽象类类型"Shape"的新表达式无效错误
- 提升::可选抽象类类型