【发布时间】:2011-02-07 17:00:10
【问题描述】:
这是我只知道我做错了的事情之一。我的任务很简单。
用c++创建3个类,
产品、软件、书籍。产品是超级的,书和软件是产品。 然后制作一个指针数组,并用软件和书籍填充数组。
所以我做了以下
int main()
{
Product *productList[10];
Book *pBook;
Book q(5);
pBook = &q;
pBook->getPrice();
Software *pSoftware;
Software g(5);
pSoftware = &g;
pSoftware ->getPrice();
productList[0] = pSoftware; // fill it with software, cannot do this.
有没有办法将子类插入到超类数组中。或者我应该将指针数组定义为其他东西。
下面的类定义
class Product
{
public:
double price;
double getPrice();
Product::Product(double price){};
};
class Book: public Product
{
public:
Book::Book(double price)
:Product(price)
{
}
double getPrice();
};
class Software: public Product
{
public:
Software::Software(double price)
:Product(price) // equivalent of super in java?
{
} // code of constructor goes here.
double getPrice();
};
【问题讨论】:
-
这是 C 还是 C++?我想这显然是 C++。使用
std::vector而不是数组 -
你能告诉我们
Product、Book和Software类的定义吗?如果Book和Software都是Product的子类型,您应该能够将所有三种类型的指针放入Product *数组中。 -
@Falmarri 标题中写着 c++。
-
@OVERTONE:是的,但是您使用的是数组而不是
std::vector,这就是我问的原因。 -
因为那是任务。我几乎没有接触过矢量,这只是对继承的介绍。如果它有助于将 c++ 添加到问题中。
标签: c++ arrays inheritance pointers subclass