在.h中声明STL数据结构,例如Vector

时间:2010-03-26 18:47:57

标签: c++ data-structures vector header-files

我正在尝试声明一个私有数据结构,例如我的C ++头文件中的Vector,我想最终在我的.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 个答案:

答案 0 :(得分:2)

请务必使用

指定您正在使用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 :(得分:1)

继Artem的回答之后,应该提到的是,虽然普通C ++类的标准做法是将声明放在.h文件中,将实现置于相应的.cpp文件中,但这通常仅适用于非模板类。如果您正在编写模板类,则整个实现通常放在定义模板接口的同一.h文件中。这样做有很多原因,如果你打算开发一个模板,我建议你先进一步调查这个问题。它可能会为你节省一些时间。