what is wrong here? (templates)

From: <- Chameleon -> (cham_gss_at_hotmail.NOSPAM.com)
Date: 05/08/04


Date: Sat, 8 May 2004 18:07:09 +0300

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



Relevant Pages