Re: FAQ Issue

From: Rob Williscroft (rtw_at_freenet.REMOVE.co.uk)
Date: 02/10/04


Date: 10 Feb 2004 15:15:22 GMT

Loran Hayden wrote in
news:%h6Wb.7757$TPZ.4776@twister01.bloor.is.net.cable.rogers.com:

[snip]
>

template < typename T >

> class FredPtr;
>
> template<typename t> // Modified code
> class Fred {
> public:
> Fred() : count_(0){ }
> private:
> friend FredPtr;

Your missing a "class" above, change too:

     friend class FresPtr< T >;

> unsigned count_;
> t _t; //
> Modified
> code

P.S when posting to usenet use /* style */ coments they wrap better.

> };
>

template <typename T>
 
> class FredPtr {
> public:
> Fred* operator-> () { return p_; }

Should now be:

     Fred< T > * operator-> () { return p_; }

etc ...

>
> Fred& operator* () { return *p_; }
>
> FredPtr(Fred* p) : p_(p) { ++p_->count_; }
>
> ~FredPtr() { if (--p_->count_ == 0) delete p_; }
>
> FredPtr(const FredPtr& p) : p_(p.p_) { ++p_->count_; }
>
> FredPtr& operator= (const FredPtr& p)
> {
> ++p.p_->count_;
> if (--p_->count_ == 0) delete p_;
> p_ = p.p_;
> return *this;
> }
>
> private:
> Fred* p_;
> };
>
[snip]

HTH.

Rob.

-- 
http://www.victim-prime.dsl.pipex.com/


Relevant Pages