rodrigobastos Postado Agosto 7, 2010 Denunciar Share Postado Agosto 7, 2010 alguém saberia alguma documentaçao sobre padrão State?Fiz este codigo mas obtenho erro na linha Machine::off, Machine::on#include <iostream> using namespace std; class Machine { class State *current; public: Machine(); void setCurrent(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 << " ON-ctor "; }; ~ON() { cout << " dtor-ON\n"; }; void off(Machine *m); }; class OFF: public State { public: OFF() { cout << " OFF-ctor "; }; ~OFF() { cout << " dtor-OFF\n"; }; void on(Machine *m) { cout << " going from OFF to ON"; m->setCurrent(new ON()); delete this; } }; void ON::off(Machine *m) { cout << " going from ON to OFF"; m->setCurrent(new OFF()); delete this; } Machine::Machine() { current = new OFF(); cout << '\n'; } int main() { void(Machine:: *ptrs[])() = { Machine::off, Machine::on }; Machine fsm; int num; while (1) { cout << "Enter 0/1: "; cin >> num; (fsm.*ptrs[num])(); } system("pause"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ce1o2e Postado Agosto 9, 2010 Denunciar Share Postado Agosto 9, 2010 (editado) não entendi muito bem mais acho que você quer fazer uma herança de classe certo ?? coloque na frente da classe que quer fazer herança assim olhaexemplo: class nome : tipo nomedaclasseprincipalexemplo: class primeiro : public segundadeixo um exemplo aqui#include <iostream> using namespace std; class Primeira { private: int x; public: void define_x(int); int acessa_x(); }; class Segundo:public Primeira { public: void exibe(Primeira *p); }; void Primeira::define_x(int x) { this->x = x; } int Primeira::acessa_x() { return x; } void Segundo::exibe(Primeira *p) { printf("X: %d", p->acessa_x()); } int main() { Primeira primeira; Segundo segundo; primeira.define_x(10); segundo.exibe(&primeira); cin.get(); return 0; }usei o codeblock (c:B) para compilaracho que e isso falou ^^@editso uma coisa que esqueçi de falar (escrever) :rolleyes: o Primeira *p e a chamada e necessario caso queria acessar o conteudo dentro dela caso tire isso apareçera uma variavel enorme qualquer que não refere-se nada ao que usamos (definimos em primeira.define_x(10); ) vlw denovo xDtambem notei um pequeno erro em seu codigo me fale o que você quer fazer com isso ?void Machine::on(){ current->on(this);}void Machine::off(){ current->off(this);} Editado Agosto 9, 2010 por ce1o2e Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rodrigobastos
alguém saberia alguma documentaçao sobre padrão State?
Fiz este codigo mas obtenho erro na linha Machine::off, Machine::on
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.