Как реализовать пользовательский класс, похожий на std::vector

#c #overloading

#c #перегрузка

Вопрос:

Мой вопрос по теме немного вводит в заблуждение, я не хочу реализовывать целый класс, подобный std :: vector, но я хочу иметь возможность создавать класс с именем Container, чтобы я мог объявить его следующим образом:

 Container <unsigned int> c;
  

Итак, вот как я перегружаю оператор <> …

 class Container
{
   private:
      Container() 
      {
         ...
      }

   public:
      void operator <>( unsigned int )
      {
         // what do I put here in the code?
         // maybe I call the private constructor...
         Container();
      }
};
  

Комментарии:

1. Какой тип контейнера вы имеете в виду?, массив, список, карту и т.д.? Все эти варианты влияют на природу конечного шаблона

Ответ №1:

Там нет operator <> . <> Обозначает, что Container является шаблоном класса. Вам нужен синтаксис, подобный:

 template <typename T>
class Container
{
    ...
};
  

Лучше всего начать с поиска хорошей книги по C , но вы также можете попробовать прочитать, например, страницу часто задаваемых вопросов по C о шаблонах.

Ответ №2:

Вам следует узнать больше о шаблонах.
http://www.cplusplus.com/doc/tutorial/templates/

В двух словах, то, что вы хотите, это:

 template <class T>
class Container {
    ....
};