В C++ это будет вызов метода method2() у того, что вернул method1().
А вы что хотите? Чтобы method2() вызывался у object? тогда метод1 должен возвращать ссылку на *this.
#include <iostream>
#include <stdexcept>
#include <iomanip>
using namespace std;
struct vantuz
{
vantuz& push();
vantuz& pull();
vantuz();
private:
bool pushed;
};
vantuz::vantuz():pushed(false)
{
}
vantuz& vantuz::push()
{
if(pushed)
{
throw logic_error("already pushed!");
}
pushed=!pushed;
cout<<"push! ";
return *this;
}
vantuz& vantuz::pull()
{
pushed=!pushed;
if(pushed)
{
throw logic_error("already pulled!");
}
cout<<"pull! ";
return *this;
}
int main()
{
try
{
vantuz v;
v.push().pull().push().pull().push().pull().push().push();
}
catch(logic_error& ex)
{
cout<<endl<<setw(20)<<setfill('@')<<' '<<"Runtime error!"<<setw(20)<<setfill('@')<<' '<<endl<<ex.what()<<endl;
throw;
}
return 0;
}
Потыкать на ideone