Как реализовать пользовательский класс, похожий на std :: vector - PullRequest
0 голосов
/ 13 мая 2011

Мой тематический вопрос немного вводит в заблуждение, я не хочу реализовывать целый класс, такой как 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();
      }
};

Ответы [ 2 ]

7 голосов
/ 13 мая 2011

Нет operator <>.<> обозначает, что Container является шаблоном класса .Вам нужен синтаксис в следующем виде:

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

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

1 голос
/ 13 мая 2011

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

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

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