M
Mark
Hi,
I have two classes:
template <class Resource> class GuardBase
{
protected :
Resource& fResource;
bool fAcquired;
GuardBase(Resource& res) : fResource(res), fAcquired(false) {}
public :
void acquire(void)
{
}
void release(void)
{
}
};
template <class Resource> class LockGuard : public GuardBase<Resource>
{
public :
LockGuard(Resource& res) : GuardBase<Resource>(res)
{
fAcquired = false; // Error
fResource.acquire(); // Error
fAcquired = true;
}
~LockGuard()
{
if (fAcquired) // Error
fResource.release(); // Error
}
};
I get compiler errors for fAcquired (and fResource) "not declared in
this scope" in the constructor and destructor of LockGuard. This is
with G++ 4.1.0 on SUSE Linux. This previously compiled on several
other compilers.
Can someone tell me what is wrong here and how to fix it please?
TIA, Mark
I have two classes:
template <class Resource> class GuardBase
{
protected :
Resource& fResource;
bool fAcquired;
GuardBase(Resource& res) : fResource(res), fAcquired(false) {}
public :
void acquire(void)
{
}
void release(void)
{
}
};
template <class Resource> class LockGuard : public GuardBase<Resource>
{
public :
LockGuard(Resource& res) : GuardBase<Resource>(res)
{
fAcquired = false; // Error
fResource.acquire(); // Error
fAcquired = true;
}
~LockGuard()
{
if (fAcquired) // Error
fResource.release(); // Error
}
};
I get compiler errors for fAcquired (and fResource) "not declared in
this scope" in the constructor and destructor of LockGuard. This is
with G++ 4.1.0 on SUSE Linux. This previously compiled on several
other compilers.
Can someone tell me what is wrong here and how to fix it please?
TIA, Mark