我有这样的结构:
foo.h中
template<class T>
class Foo {
public:
// Public For Now While Constructing Class
std::shared_ptr<T> m_p256[256];
private:
static unsigned m_elementCount;
std::vector<std::shared_ptr<Foo<T>>> m_foos;
public:
Foo();
~Foo();
void add( T object );
}; // Foo
Foo.inl
template<class T>
unsigned Foo<T>::m_elementCount = 0;
template<class T>
Foo<T>::Foo() :
m_p256{ nullptr } {
} // Foo
template<class T>
Foo<T>::~Foo() {
} // ~Foo
template<class T>
void Foo<T>::add( T obj ) {
m_elementCount++;
if ( m_elementCount == 256 ) {
// Save Current Instance To Our Vector
// Here Is Where I've Tried Several Things And Where I'm Currently Stuck
m_foos.push_back( a shared_ptr of this instance );
// Reset Element Count
m_elementCount = 0;
Foo<T>* fooPtr = new Foo<T>();
fooPtr->add( obj );
} else {
std::shared_ptr<T> pT( new T( obj ) );
m_p256[m_elementCount-1] = pT;
}
} // add
基本上我尝试做的是使用add函数传递任何相同类型的任意对象。一旦元素计数达到256个元素并且传入的那个类型的智能指针的内部数组被填充,我想保存这个类的实例化对象的当前实例并将其推入向量并传入下一个对象属于创建的新实例或下一个实例,但所有后续实例仍然是原始对象的一部分。因此,当每个256的数组被填充时,它将像链接列表一样,但它更像是链接效果。我只是坚持保存这个实例的当前状态。