+
+// implementation
+
+class MyCarRefData: public wxObjectRefData
+{
+public:
+ MyCarRefData()
+ {
+ m_price = 0;
+ }
+
+ MyCarRefData( const MyCarRefData& data )
+ : wxObjectRefData()
+ {
+ m_price = data.m_price;
+ }
+
+ bool operator == (const MyCarRefData& data) const
+ {
+ return m_price == data.m_price;
+ }
+
+ int m_price;
+};
+
+
+#define M_CARDATA ((MyCarRefData *)m_refData)
+
+IMPLEMENT_DYNAMIC_CLASS(MyCar,wxObject)
+
+MyCar::MyCar( int price )
+{
+ m_refData = new MyCarRefData();
+ M_CARDATA->m_price = price;
+}
+
+wxObjectRefData *MyCar::CreateRefData() const
+{
+ return new MyCarRefData;
+}
+
+wxObjectRefData *MyCar::CloneRefData(const wxObjectRefData *data) const
+{
+ return new MyCarRefData(*(MyCarRefData *)data);
+}
+
+bool MyCar::operator == ( const MyCar& car ) const
+{
+ if (m_refData == car.m_refData) return true;
+
+ if (!m_refData || !car.m_refData) return false;
+
+ return ( *(MyCarRefData*)m_refData == *(MyCarRefData*)car.m_refData );
+}
+
+void MyCar::SetPrice( int price )
+{
+ UnShare();
+
+ M_CARDATA->m_price = price;
+}
+
+int MyCar::GetPrice() const
+{
+ wxCHECK_MSG( IsOk(), -1, "invalid car" );
+
+ return (M_CARDATA->m_price);
+}
+
+\end{verbatim}
+
+\wxheading{Library}
+
+\helpref{wxBase}{librarieslist}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxObjectRefData::wxObjectRefData}\label{wxobjectrefdatactor}