有没有办法将类的指针保存到成员共享指针

时间:2016-04-10 05:25:17

标签: c++ shared-ptr this-pointer class-template

我有这样的结构:

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的数组被填充时,它将像链接列表一样,但它更像是链接效果。我只是坚持保存这个实例的当前状态。

0 个答案:

没有答案