473,320 Members | 1,848 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

xServices::CServices<TImp>::StHoldClientList::StHo ldClientList(std::set<TImp*, std::less<TImp*>, std::allocator<TImp*> >&)':

Hi
I am facing a problem in compilation the error is like this

In constructor
xServices::CServices<TImp>::StHoldClientList::StHo ldClientList(std::set<TImp*,
std::less<TImp*>, std::allocator<TImp*> >&)':
: error: expected `;' before "pos"
: error: `pos' undeclared (first use this function)
: error: (Each undeclared identifier is reported only once for each
function it appears in.)
: In destructor
`xServices::CServices<TImp>::StHoldClientList::~St HoldClientList()':
: error: expected `;' before "pos"
: error: `pos' undeclared (first use this function)
Source Code:

namespace xServices
{

template <class TImp>
class CServices
{
protected:
typedef typename std::set<TImp*> ServiceList;
typedef typename ServiceList::iterator ServiceIterator;
ServiceList m_list;
struct StHoldClientList
{
StHoldClientList(ServiceList& clients)
: m_clients(clients)
{
for (CServices::ServiceIterator pos = m_clients.begin(); pos !=
m_clients.end(); ++pos)
(*pos)->AddRef();
}
~StHoldClientList()
{
for (CServices::ServiceIterator pos = m_clients.begin(); pos !=
m_clients.end(); ++pos)
(*pos++)->Release();
}
ServiceList& m_clients;
};
friend struct StHoldClientList;
};
}
Can u help me to solve this error.
Can you suggest standard way of doing it on Sun Solaris Sparc? We are
using gcc 3.4.2 .
Thanks
Vinu

Jul 23 '05 #1
5 1817

Jul 23 '05 #2
Try moving the declaration of the ServiceIterator pos out of the
for-loop.

Incidentally, check your destructor, it appears you may be incrementing
'pos' twice, once in the Release, and once for each loop.

Jul 23 '05 #3


I tried the for - loop option what u specified but still it is giving
error and ur next suggestion ,I think it will not affect at compilation
Thanks
Vinu

Jul 23 '05 #4
It compiles with gcc, so I am not certain what your error is. It may
be the sun compiler. Try changing ServiceIterator to:

std::set<TImp*>::iterator pos

Also, yes, the pos increment would be a run-time memory leak, not a
compilation problem.

Jul 23 '05 #5

"Vinu" <vi*********@yahoo.com> wrote in message
news:11*********************@o13g2000cwo.googlegro ups.com...
Hi
I am facing a problem in compilation the error is like this

In constructor
xServices::CServices<TImp>::StHoldClientList::StHo ldClientList(std::set<TImp*,
std::less<TImp*>, std::allocator<TImp*> >&)':
: error: expected `;' before "pos"
: error: `pos' undeclared (first use this function)
: error: (Each undeclared identifier is reported only once for each
function it appears in.)
: In destructor
`xServices::CServices<TImp>::StHoldClientList::~St HoldClientList()':
: error: expected `;' before "pos"
: error: `pos' undeclared (first use this function)
Source Code:

namespace xServices
{

template <class TImp>
class CServices
{
protected:
typedef typename std::set<TImp*> ServiceList;
typedef typename ServiceList::iterator ServiceIterator;
ServiceList m_list;
struct StHoldClientList
{
StHoldClientList(ServiceList& clients)
: m_clients(clients)
{
for (CServices::ServiceIterator pos = m_clients.begin(); pos !=
m_clients.end(); ++pos)
(*pos)->AddRef();
}
~StHoldClientList()
{
for (CServices::ServiceIterator pos = m_clients.begin(); pos !=
m_clients.end(); ++pos)
(*pos++)->Release();
}
ServiceList& m_clients;
};
friend struct StHoldClientList;
};
}
Can u help me to solve this error.
Can you suggest standard way of doing it on Sun Solaris Sparc? We are
using gcc 3.4.2 .
Thanks
Vinu


try this:

CServices::ServiceIterator pos;
for (pos = m_clients.begin(); pos != m_clients.end(); ++pos)
(*pos)->AddRef();
Jul 23 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.