fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Formula {
  5. protected:
  6. bool value;
  7.  
  8. static bool getValue(Formula& f) {
  9. return f.value;
  10. }
  11.  
  12. Formula(bool value) : value(value) {}
  13.  
  14. public:
  15. void printValue() {
  16. cout << value << endl;
  17. }
  18.  
  19. virtual ~Formula() = 0;
  20. };
  21.  
  22. Formula::~Formula(){}
  23.  
  24. class Proposition : public Formula {
  25. private:
  26. string name;
  27. public:
  28. Proposition(string s, bool b) : Formula(b), name(s) {}
  29. };
  30.  
  31. class Conjunction : public Formula {
  32. private:
  33. Formula* l;
  34. Formula* r;
  35. public:
  36. Conjunction(Formula* f1, Formula* f2) :
  37. Formula(Formula::getValue(*f1) && Formula::getValue(*f2)), l(f1), r(f2) {}
  38. };
  39.  
  40. int main() {
  41. Proposition a("a", true);
  42. Proposition b("b", false);
  43. Conjunction c(&a, &b);
  44. a.printValue();
  45. b.printValue();
  46. c.printValue();
  47. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
1
0
0