我正在尝试声明一个私有数据结构,例如我的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);
}
此处的语法是否有效?或者是否有一种不同的方式来声明和填充这样的结构?
答案 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文件中。这样做有很多原因,如果你打算开发一个模板,我建议你先进一步调查这个问题。它可能会为你节省一些时间。