我正在编写一个模板类,它的行为应该像一个容器。内部数据是指向泛型类的智能指针向量T
。
标题
#include <vector>
#include <boost/shared_ptr.hpp>
namespace Foo
{
template <class T>
class AstrContainer
{
public:
typedef boost::shared_ptr<T> p_element;
typedef std::vector<p_element> v_p_elements;
protected:
v_p_elements _vData;
public:
AstrContainer();
virtual ~AstrContainer();
typename v_p_elements::iterator begin();
typename v_p_elements::iterator end();
};
}
来源
#include "AstrContainer.hpp"
namespace Foo
{
template<class T>
AstrContainer<T>::AstrContainer()
{
}
template<class T>
AstrContainer<T>::~AstrContainer()
{
}
typename
v_p_elements::iterator AstrContainer<T>::begin() // - - - ERROR LINE 1 - - -
{
return _vData.begin();
}
template<class T>
typename v_p_elements::iterator AstrContainer<T>::end() // - - - ERROR LINE 2 - - -
{
return _vData.end();
}
}
我对C++中的模板类非常陌生,并且有点卡在ERROR LINE 1
错误 C2653:“v_p_elements”:不是类或命名空间名称
所以我评论了这个begin()
方法,但在ERROR LINE 2处,它因同样的错误而停止。
现在似乎很清楚,由于v_p_elements
在类内部进行了类型定义,因此可能无法将其导出到外部世界。但现在我要问的是整个事情是否可能,或者我只是误解了什么。