G
Guest
I have these errors with code following:
---------------------------------------------------------------
'SharedObject' : use of class template requires template argument list
'SharedObject<C>::checkEquality' : unable to match function definition to an existing declaration
'SharedObject<C>::GarbageCollector' : unable to match function definition to an existing declaration
---------------------------------------------------------------
#ifndef SHARED_OBJECT_H
#define SHARED_OBJECT_H
template <class C>
struct Shared
{
unsigned int count;
C data;
};
template <class C>
class SharedObject
{
public:
static void GarbageCollector();
protected:
Shared<C> *pointer;
static vector <Shared<C>*> pointers;
static Shared<C> *checkEquality(C &c);
};
template <class C>
Shared<C> *SharedObject::checkEquality(C &c)
{
for (int z = 0; z < (signed) pointers.size(); z++)
if (pointers[z]->count && c == pointers[z]->data) return pointers[z];
return 0;
}
template <class C>
void SharedObject::GarbageCollector()
{
for (unsigned int z = 0; z < pointers.size(); z++)
if (!pointers[z]->count)
{
delete pointers[z];
pointers[z] = pointers.back();
pointers.pop_back();
z--;
}
}
#endif // SHARED_OBJECT_H
---------------------------------------------------------------
'SharedObject' : use of class template requires template argument list
'SharedObject<C>::checkEquality' : unable to match function definition to an existing declaration
'SharedObject<C>::GarbageCollector' : unable to match function definition to an existing declaration
---------------------------------------------------------------
#ifndef SHARED_OBJECT_H
#define SHARED_OBJECT_H
template <class C>
struct Shared
{
unsigned int count;
C data;
};
template <class C>
class SharedObject
{
public:
static void GarbageCollector();
protected:
Shared<C> *pointer;
static vector <Shared<C>*> pointers;
static Shared<C> *checkEquality(C &c);
};
template <class C>
Shared<C> *SharedObject::checkEquality(C &c)
{
for (int z = 0; z < (signed) pointers.size(); z++)
if (pointers[z]->count && c == pointers[z]->data) return pointers[z];
return 0;
}
template <class C>
void SharedObject::GarbageCollector()
{
for (unsigned int z = 0; z < pointers.size(); z++)
if (!pointers[z]->count)
{
delete pointers[z];
pointers[z] = pointers.back();
pointers.pop_back();
z--;
}
}
#endif // SHARED_OBJECT_H