$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Stephen Jackson (stephen.jackson_at_[hidden])
Date: 2003-03-04 18:44:03
Michael Hunley wrote:
>
> Disclaimer: I am relatively new to gcc, linux and Boost. I'm hoping
> someone out in the group who is much more knowledgable about all of them
> can help me get past a hurdle in code I am porting from Windows. I am
> getting a vague error message from g++ (gcc 3.2-7 under Redhat Linux 8.0)
> in my code using the Boost scoped_lock.
>
[ snip ]
>
> The error is "ISO C++ forbids declarations of 'type name' with no
type". I
> get that error on several lines, but most notably on a simple
declaration like:
> PScopedLock Lock(MyMutex);
>
Hi Michael,
I think you will need to post some more code; I have tried the code you
posted, including your simple declaration, on the same platform (gcc
3.2-7 under Redhat Linux 8.0) - with boost 1.29.0. This compiles without
error. (See below.)
Regards,
Stephen Jackson
--
stephen.jackson_at_[hidden] http://www.scribitur.com/spj/
gcc -c -Iboost_1_29_0 testit.cpp -Wall
#include "boost/thread/mutex.hpp"
// Begin your posted code
class PMutex
{
public:
PMutex() {}
virtual ~PMutex() {}
protected:
boost::mutex m_Mutex;
friend class PScopedLock;
};
class PScopedLock
{
public:
explicit PScopedLock( PMutex& M ) :
m_ScopedLock(M.m_Mutex) {}
virtual ~PScopedLock() {}
static PScopedLock* Create( PMutex& M ) { return
(PScopedLock*) ::new PScopedLock(M); }
void Destroy( void ) { delete this; }
protected:
void* operator new(size_t) {} /* disallowed, must declare on
the stack */
boost::mutex::scoped_lock m_ScopedLock;
friend class PCondition;
};
// End your posted code
void this_is_a_test()
{
PMutex MyMutex;
PScopedLock Lock(MyMutex); // Compiles OK
}