Это одна из тех вещей, где я просто знаю, что я делаю это неправильно. Моя задача проста.Вставка подклассов в массив суперклассов в C++
Создание 3-х классов в C++,
продукта, программное обеспечение, книги. продукт супер, книга и программное обеспечение являются продуктом. затем создайте массив указателей и заполните массив программным обеспечением и книгами.
так я сделал следующее
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' вместо массива – Falmarri
Можете ли вы показать нам определения классов' Product', 'Book' и' Software'? Вы должны иметь возможность помещать все три типа указателей в массив 'Product *', если 'Book' и' Software' - все подтипы 'Product'. – birryree
@Falmarri, он говорит C++ в названии. – OVERTONE