Объявление структур данных STL, таких как Vector, в .h - PullRequest
0 голосов
/ 26 марта 2010

Я пытаюсь объявить частную структуру данных, такую ​​как вектор, в моем заголовочном файле C ++, которую я хочу в итоге использовать в реализации метода моего .cpp.

Примером может быть мой заголовок "SomeClass.h", где у меня есть:

class SomeClass
{
  private:
  Vector<T> myVector;
  public:
  void AddTtoMyVector(T add);
}

И в моем .cpp, который называется SomeClass.cpp, у меня есть следующее:

#include "SomeClass.h"

SomeClass::AddTtoMyVector(T add)
{
     myVector.Push_back(add);
}

Будет ли здесь работать синтаксис? Или есть другой способ объявления и заполнения таких структур?

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Обязательно укажите, что вы используете вектор STL, используя

std::vector<T> myVector;

или

using std::vector;

Кроме того, если T является универсальным типом, вы хотитесделать весь класс шаблонным:

#include <vector>

using std::vector;

template< typename T >
class SomeClass
{
  private:
  vector<T> myVector;
  public:
  void AddTtoMyVector(T add) {myVector.push_back( add );}
}
1 голос
/ 26 марта 2010

Следуя ответу Артема, следует отметить, что хотя стандартная практика для обычных классов C ++ заключается в размещении объявлений в файле .h, а реализации в базовом файле .cpp, это обычно относится только к не шаблон классы. Если вы пишете шаблонный класс, вся реализация обычно помещается в тот же файл .h, который определяет интерфейс шаблона. Для этого есть ряд причин, и если вы планируете разработать шаблон, я бы посоветовал изучить эту проблему чуть раньше. Скорее всего, это сэкономит вам время в будущем.

...