Witam,
wraz w kolegą bawimy się klasami i kontenerami. Zastanawiamy się która wersja generate() będzie najlepsza:
#include "Item.h"
void ItemManager::generate()
{
for(int i = 0; i < ItemAmount; ++i)
{
int choose = rand() % 2;
if(!choose)
_items[i] = new SmallItem;
else
_items[i] = new BigItem;
}
}
#include "Item.h"
Item* generateItem()
{
Item* item;
int choose = rand() % 2;
if(!choose)
item = new SmallItem;
else
item = new BigItem;
return item;
}
void ItemManager::generate()
{
for(int i = 0; i < ItemAmount; ++i)
{
_items[i]= generateItem();
}
}
main.cpp:
#include <ctime>
#include "Item.h"
int main()
{
ItemManager manager;
manager.generate();
}
Item.h:
#include <iostream>
#include <random>
const int ItemAmonut = 20;
class Item
{
public:
Item(int size)
:_size(size)
{
}
protected:
int _size;
};
class SmallItem :public Item
{
public:
SmallItem()
:Item(5)
{
}
};
class BigItem :public Item
{
public:
BigItem()
:Item(15)
{
}
};
class ItemManager
{
public:
ItemManager()
{
for(int i =0; i< ItemAmonut; ++i)
_items[i]= NULL;
}
void generate()
{
for(int i =0; i< ItemAmonut; ++i)
_items[i] = new SmallItem;
}
private:
Item* _items[ItemAmonut];
};
Z góry dzięki za odpowiedzi :). Jeżeli żadna z podanych przeze mnie propozycji nie jest poprawna to proszę o wskazanie błędu lub napisanie poprawnej.