omaxphp
@omaxphp
Выучиться не значит знать

Как в С++ использовать несколько методов к объекту как в JavaScript?

в javascript
object.method1().method2();

а как в c++ так можно сделать, как нужно определить/создавать класс?
  • Вопрос задан
  • 220 просмотров
Решения вопроса 2
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
В 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
Ответ написан
@asdz
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы