#pragma warning(disable:4786) #include #include using namespace std; class CYamanote { friend CYamanote& operator ++(CYamanote& ryamanote); private: vector m_vecstrStation; int m_iStation; public: CYamanote() { m_iStation = 0; m_vecstrStation.push_back("東京" ); m_vecstrStation.push_back("神田" ); m_vecstrStation.push_back("秋葉原"); } const char* c_str() { return m_vecstrStation[m_iStation].c_str(); } }; // 前置きインクリメント演算子 ++ をグローバル関数として定義する。 CYamanote& operator ++(CYamanote& ryamanote) { ryamanote.m_iStation = ++ryamanote.m_iStation % ryamanote.m_vecstrStation.size(); return ryamanote; } int main() { CYamanote yamanote; {for (int iIter = 0; iIter < 5; iIter++) { printf("%s\n", (++yamanote).c_str()); }} return 0; }