By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,651 Members | 1,757 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,651 IT Pros & Developers. It's quick & easy.

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

P: n/a
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
Share this Question
Share on Google+
5 Replies


P: n/a

Jul 23 '05 #2

P: n/a
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

P: n/a


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

P: n/a
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

P: n/a

"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 discussion thread is closed

Replies have been disabled for this discussion.