![]() |
Error while writing State Design Pattern Code
Hi All
i am getting Error while writing following code for state design Pattern kindly let me know How to Correct this Error ?? Thanks Pallav Singh ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++ #include<iostream.h> using namespace std; class state; class Machine { class state * current; public : Machine(); void setcurrentstate(state * s) { current = s ; } void on(); void off(); }; class state { public : virtual void on(Machine * m) {cout<< " Already On \n"; } virtual void off(Machine * m) {cout<<"Already Off \n"; } }; void Machine::on() { current->on(this); } void Machine::off() { current->off(this); } class ON : public state { public : ON() {cout<<"Destructor invoked \n ";} ~ON() {cout<<"Constructor invoked \n ";} void off(Machine * m); }; class OFF : public state { public : OFF() {cout<<"Destructor invoked \n ";} ~OFF() {cout<<"Constructor invoked \n ";} void on(Machine * m) {cout<<"Going from OFF to ON"; m->setcurrentstate( new ON() ); delete this; } }; Machine::Machine() { current = new OFF(); cout<<"Machine constructor Called "<<endl; } void ON::off(Machine * m) { cout<<"Going from ON to OFF"; m->setcurrentstate( new OFF() ); delete this; } int main() { void (Machine::*ptrs[] )() = { Machine::off, Machine::on }; // Error Point Machine FSM; int num; while(1) { cout <<"Enter 0 / 1 : "; cin >> num; (FSM.*ptrs[num])(); } return 0; } ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++ |
Re: Error while writing State Design Pattern Code
"Pallav singh" <singh.pallav@gmail.com> a écrit dans le message de news: 2c1ee6ab-5e22-48e5-8a75-f6c6d438a841...oglegroups.com... > Hi All > > i am getting Error while writing following code for state design > Pattern > kindly let me know How to Correct this Error ?? > > Thanks > Pallav Singh > > ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++ > > #include<iostream.h> > using namespace std; > > class state; > > class Machine > { > class state * current; > public : > Machine(); > > void setcurrentstate(state * s) > { current = s ; } > > void on(); > void off(); > }; > > class state > { > public : > virtual void on(Machine * m) > {cout<< " Already On \n"; } > > virtual void off(Machine * m) > {cout<<"Already Off \n"; } > }; > > void Machine::on() > { current->on(this); } > > void Machine::off() > { current->off(this); } > > class ON : public state > { > public : > ON() {cout<<"Destructor invoked \n ";} > ~ON() {cout<<"Constructor invoked \n ";} > void off(Machine * m); > }; > > class OFF : public state > { > public : > OFF() {cout<<"Destructor invoked \n ";} > ~OFF() {cout<<"Constructor invoked \n ";} > void on(Machine * m) > {cout<<"Going from OFF to ON"; > m->setcurrentstate( new ON() ); > delete this; > } > }; > > > > Machine::Machine() > { > current = new OFF(); > cout<<"Machine constructor Called "<<endl; > } > > > void ON::off(Machine * m) > { > cout<<"Going from ON to OFF"; > m->setcurrentstate( new OFF() ); > delete this; > } > > > > > int main() > { > > void (Machine::*ptrs[] )() = { Machine::off, Machine::on }; // Error > Point > Machine FSM; > int num; > while(1) > { cout <<"Enter 0 / 1 : "; > cin >> num; > (FSM.*ptrs[num])(); > } > > return 0; > } > > ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++ Well I don't get any errors while compiling it with intel c++ compiler... Except that I changed : void (Machine::*ptrs[] )() = { Machine::off, Machine::on }; // Error Point for void (Machine::*ptrs[] )() = { Machine::off, Machine::on }; // Error Point I guess it is a typo error... |
| All times are GMT. The time now is 04:17 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.