一个模板类编译不过.
template<typename ObjectType>
class ObjectReusePool
{
class ObjectType;
public:
~ObjectReusePool()
{
for (size_t I=0;I<mObjectVector.size();I++)
{
delete mObjectVector[I];
}
mObjectVector.clear();
}
inline ObjectType* GetObject()
{
if (mObjectVector.empty())return new ObjectType();
ObjectType* _Obj = mObjectVector.pop_back();
return _Obj;
}
inline void CollectObject(ObjectType* _Obj)
{
mObjectVector.push_back(_Obj);
}
protected:
//这里包含类型指针,编译不过.
std::vector<ObjectType*> mObjectVector;
};
int main()
{
ObjectReusePool<int> abc;
abc.GetObject();
}
#include <vector>
template<typename ObjectType>
class ObjectReusePool
{
public:
~ObjectReusePool()
{
for (size_t I = 0; I<mObjectVector.size(); I++)
{
delete mObjectVector[I];
}
mObjectVector.clear();
}
inline ObjectType* GetObject()
{
if (mObjectVector.empty()) return new ObjectType;
ObjectType* _Obj = mObjectVector.back();
return _Obj;
}
inline void CollectObject(ObjectType* _Obj)
{
mObjectVector.push_back(_Obj);
}
protected:
//这里包含类型指针,编译不过.
std::vector<ObjectType*> mObjectVector;
};
int main()
{
ObjectReusePool<int> abc;
abc.GetObject();
}
#include <vector>
template<typename ObjectType>
class ObjectReusePool
{
public:
~ObjectReusePool()
{
for (size_t I = 0; I<mObjectVector.size(); I++)
{
delete mObjectVector[I];
}
mObjectVector.clear();
}
inline ObjectType* GetObject()
{
if (mObjectVector.empty()) return new ObjectType;
ObjectType* _Obj = mObjectVector.back();
mObjectVector.pop_back();
return _Obj;
}
inline void CollectObject(ObjectType* _Obj)
{
mObjectVector.push_back(_Obj);
}
protected:
//这里包含类型指针,编译不过.
std::vector<ObjectType*> mObjectVector;
};
int main()
{
ObjectReusePool<int> abc;
abc.GetObject();
}