> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] g] On Behalf Of [EMAIL PROTECTED] > Sent: Thursday, July 27, 2006 5:51 PM > Subject: How do you implement this Python idiom in C++ > > I am no C++ expert but i guess there might be some in the Python and > C++ newsgroups.
You could try sth. like this: <cpp> #include <iostream> template<class T> class Counted { static int count; public: Counted() { ++count; } Counted(const Counted<T>&) { ++count; } ~Counted() { --count; } template <class V> friend int getCount(V&); }; template<class T> int Counted<T>::count = 0; // Curious class definitions class CountedClass : private Counted<CountedClass> {}; class CountedClass2 : private Counted<CountedClass2> {}; class CountedClass3 : public CountedClass, private Counted<CountedClass3> {}; template <class T> int getCount(T &) { return Counted<T>::count; } using namespace std; int main() { CountedClass a; cout << getCount(a) << endl; // 1 CountedClass b; cout << getCount(b) << endl; // 2 CountedClass3 c; cout << getCount(c) << endl; // 1 cout << getCount(a) << endl; // 3 and should be 2?? } </cpp> Your last assertion ('should be 2') is questionable, IMHO. I think the above code has it right in this case rather than your python version (after all c isA CountedClass, isn't it?). cheers, aa -- Andreas Ames | Programmer | Comergo GmbH | Voice: +49 69 7505 3213 | ames AT avaya DOT com -- http://mail.python.org/mailman/listinfo/python-list