#include <iostream>
#include <string>
using namespace std;
class CBook
{
public:
CBook(string name, int n=0) : m_strName(name), m_nIndex(n) {}
void SetIndex(int n)
{
m_nIndex = n;
}
int GetIndex()
{
return m_nIndex;
}
public:
int m_nIndex;
private:
string m_strName;
};
template<class T>
class ref
{
public:
ref(T *p) : ptr(p) {}
T * operator++() { return ++ptr; }
T & operator*() { return *ptr; }
T * operator->() { return ptr; }
T & incr()
{
++ptr->m_nIndex;
return (*ptr);
}
private:
T *ptr;
};
int main()
{
CBook book1("want", 100);
ref<CBook> rb(&book1);
cout << "Id : " << rb->GetIndex() << endl;
rb.incr();
cout << "Id : " << rb->GetIndex() << endl;
return 0;
}
#include <string>
using namespace std;
class CBook
{
public:
CBook(string name, int n=0) : m_strName(name), m_nIndex(n) {}
void SetIndex(int n)
{
m_nIndex = n;
}
int GetIndex()
{
return m_nIndex;
}
public:
int m_nIndex;
private:
string m_strName;
};
template<class T>
class ref
{
public:
ref(T *p) : ptr(p) {}
T * operator++() { return ++ptr; }
T & operator*() { return *ptr; }
T * operator->() { return ptr; }
T & incr()
{
++ptr->m_nIndex;
return (*ptr);
}
private:
T *ptr;
};
int main()
{
CBook book1("want", 100);
ref<CBook> rb(&book1);
cout << "Id : " << rb->GetIndex() << endl;
rb.incr();
cout << "Id : " << rb->GetIndex() << endl;
return 0;
}