Каков наилучший способ хранения и создания списка классов в C ++ без использования STL? - PullRequest
0 голосов
/ 17 сентября 2009

У меня есть код, подобный следующему:

class News {
public:
  virtual void get() = 0;
}

class Cnn : News {
  void get () {...}
}

class Msnbc : News {
  void get () {...}
}

class Bbc : News {
  void get () {...}
}


main ()
{
 News * news = new Cnn;
 news->get ()

 News * news = new Msnbc;
 news->get ()

 News * news = new Bbc;
 news->get ()
}

Вместо создания каждого подкласса, каков наилучший способ хранения подклассов (Cnn, Msnbc ...), итерации и получения новостей из всех каналов (я не могу использовать STL в мгновение)

Спасибо

Ответы [ 2 ]

2 голосов
/ 17 сентября 2009

Если вы не можете использовать STL, то лучше всего использовать массив новостей *.

News*[] GetAllNews( int& count ) {
  News*[] arr = new News*[3];
  count = 3;
  arr[0] = new Cnn();
  arr[1] = new Msnbc();
  arr[2] = new Bbc();
  return arr;
}

int count;
News*[] arr = GetAllNews(count);
for ( int i = 0; i < count; i++ ) {
  arr[i]->get();
}

// Now for the awkward cleanup
for ( int i = 0; i < count; i++ ) {
  delete arr[i];
  arr[i] = NULL;
}
delete[] arr;
0 голосов
/ 17 сентября 2009
News *n[] = { new Cnn(), new Msnbc(), new Bbc() };
for(News **p=n;p<&n[ sizeof(n)/sizeof(*n) ];++p) {
    (*p)->get();
    delete *p;
}
...