fork download
  1. enum typeof {
  2. undefined = 0,
  3. number = 1,
  4. boolean = 2,
  5. string = 3,
  6. symbol = 4,
  7. function = 5,
  8. object = 6
  9. };
  10.  
  11. class Error{
  12. private:
  13. string error;
  14. public:
  15. Error(string e):error(e){}
  16. string message(){
  17. return error;
  18. }
  19. }
  20.  
  21. class Number{
  22. private:
  23. long integer;
  24. double real;
  25. unsigned long uInt;
  26. unsigned double uReal;
  27. unsigned char represent;
  28. const string type = "Number";
  29. public:
  30. Number(long& i):integer(i),represent(0){}
  31. Number(unsigned long& i):uInt(i),represent(1){}
  32. Number(double& r):real(r),represent(2){}
  33. Number(unsigned double& r):uReal(r),represent(3){}
  34. Number& operator=(long& i){
  35. integer = i;
  36. represent = 0;
  37. }
  38. Number& operator=(unsigned long& i){
  39. uInt = i;
  40. represent = 1;
  41. }
  42. Number& operator=(double& r){
  43. real = r;
  44. represent = 2;
  45. }
  46. Number& operator=(unsigned double& r){
  47. uReal = r;
  48. represent = 3;
  49. }
  50. Number& operator+=(long& i){
  51. }
  52. Number& operator+=(unsigned long& i){
  53. }
  54. Number& operator+=(double& r){
  55. }
  56. Number& operator+=(unsigned double& r){
  57. }
  58. string operator+=(string& s){
  59. }
  60. string operator+=(char& c){
  61. }
  62. }
  63.  
  64. class var{
  65. private:
  66. void * data;
  67. unsigned short type;
  68. string constructor;
  69. public:
  70. var():data(NULL),type(typeof.undefined),constructor("none"){}
  71. var& operator=(var& rhs){
  72. if(rhs.constructor == this->constructor){
  73. data.set(rhs.get());
  74. }else{
  75.  
  76. }
  77. }
  78. short typeof(){return type;}
  79. string instanceof(){return constructor;}
  80. template <typename T> void useAs(T& container){
  81. container = *((T*)(data));
  82. }
  83. void forEach(void (*f)(string, var)){
  84. if(type == typeof.object)
  85. ((Object*)(data))->forEach(f);
  86. else throw Error("Variable has no 'forEach' method.");
  87. }
  88. void forEach(void (*f)(int, var)){
  89. if(type == typeof.object){
  90.  
  91. }
  92. }
  93. }
  94.  
  95. class Object{
  96. private:
  97. var * values;
  98. string * keys;
  99. unsigned short length;
  100. var * pValues;
  101. string * pKeys;
  102. unsigned short pLength;
  103. public:
  104. Object(){}
  105. void forEach(void (*f)(string, var)){
  106. for(int i = 0; i < length; i++){
  107. (*f)(keys[i], values[i]);
  108. }
  109. }
  110. void instanceof(string constructor){
  111. return (constructor == "Object");
  112. }
  113. }
  114.  
  115. class Array : public Object{
  116.  
  117. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:6: error: expected identifier before ‘typeof’
 enum typeof {
      ^
prog.cpp:1:13: error: expected primary-expression before ‘{’ token
 enum typeof {
             ^
prog.cpp:1:13: error: expected unqualified-id before ‘{’ token
prog.cpp:13:5: error: ‘string’ does not name a type
     string error;
     ^
prog.cpp:15:18: error: expected ‘)’ before ‘e’
     Error(string e):error(e){}
                  ^
prog.cpp:16:5: error: ‘string’ does not name a type
     string message(){
     ^
prog.cpp:19:1: error: expected ‘;’ after class definition
 }
 ^
prog.cpp:26:21: error: ‘signed’ or ‘unsigned’ invalid for ‘uReal’
     unsigned double uReal;
                     ^
prog.cpp:28:11: error: ‘string’ does not name a type
     const string type = "Number";
           ^
prog.cpp:33:29: error: ‘signed’ or ‘unsigned’ invalid for ‘r’
     Number(unsigned double& r):uReal(r),represent(3){}
                             ^
prog.cpp:33:5: error: ‘Number::Number(double&)’ cannot be overloaded
     Number(unsigned double& r):uReal(r),represent(3){}
     ^
prog.cpp:32:5: error: with ‘Number::Number(double&)’
     Number(double& r):real(r),represent(2){}
     ^
prog.cpp:46:40: error: ‘signed’ or ‘unsigned’ invalid for ‘r’
     Number& operator=(unsigned double& r){
                                        ^
prog.cpp:46:13: error: ‘Number& Number::operator=(double&)’ cannot be overloaded
     Number& operator=(unsigned double& r){
             ^
prog.cpp:42:13: error: with ‘Number& Number::operator=(double&)’
     Number& operator=(double& r){
             ^
prog.cpp:56:41: error: ‘signed’ or ‘unsigned’ invalid for ‘r’
     Number& operator+=(unsigned double& r){
                                         ^
prog.cpp:56:13: error: ‘Number& Number::operator+=(double&)’ cannot be overloaded
     Number& operator+=(unsigned double& r){
             ^
prog.cpp:54:13: error: with ‘Number& Number::operator+=(double&)’
     Number& operator+=(double& r){
             ^
prog.cpp:58:5: error: ‘string’ does not name a type
     string operator+=(string& s){
     ^
prog.cpp:60:5: error: ‘string’ does not name a type
     string operator+=(char& c){
     ^
prog.cpp:62:1: error: expected ‘;’ after class definition
 }
 ^
prog.cpp: In member function ‘Number& Number::operator=(long int&)’:
prog.cpp:37:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator=(long unsigned int&)’:
prog.cpp:41:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator=(double&)’:
prog.cpp:45:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator=(double&)’:
prog.cpp:49:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator+=(long int&)’:
prog.cpp:51:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator+=(long unsigned int&)’:
prog.cpp:53:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator+=(double&)’:
prog.cpp:55:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘Number& Number::operator+=(double&)’:
prog.cpp:57:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: At global scope:
prog.cpp:68:5: error: ‘string’ does not name a type
     string constructor;
     ^
prog.cpp:78:18: error: expected primary-expression before ‘)’ token
     short typeof(){return type;}
                  ^
prog.cpp:78:19: error: expected unqualified-id before ‘{’ token
     short typeof(){return type;}
                   ^
prog.cpp:79:5: error: ‘string’ does not name a type
     string instanceof(){return constructor;}
     ^
prog.cpp:83:27: error: expected ‘,’ or ‘...’ before ‘(’ token
     void forEach(void (*f)(string, var)){
                           ^
prog.cpp:93:1: error: expected ‘;’ after class definition
 }
 ^
prog.cpp: In constructor ‘var::var()’:
prog.cpp:70:16: error: ‘NULL’ was not declared in this scope
     var():data(NULL),type(typeof.undefined),constructor("none"){}
                ^
prog.cpp:70:27: error: expected primary-expression before ‘typeof’
     var():data(NULL),type(typeof.undefined),constructor("none"){}
                           ^
prog.cpp:70:45: error: class ‘var’ does not have any field named ‘constructor’
     var():data(NULL),type(typeof.undefined),constructor("none"){}
                                             ^
prog.cpp: In member function ‘var& var::operator=(var&)’:
prog.cpp:72:16: error: ‘class var’ has no member named ‘constructor’
         if(rhs.constructor == this->constructor){
                ^
prog.cpp:72:37: error: ‘class var’ has no member named ‘constructor’
         if(rhs.constructor == this->constructor){
                                     ^
prog.cpp:73:18: error: request for member ‘set’ in ‘((var*)this)->var::data’, which is of non-class type ‘void*’
             data.set(rhs.get());
                  ^
prog.cpp:73:26: error: ‘class var’ has no member named ‘get’
             data.set(rhs.get());
                          ^
prog.cpp:77:5: warning: no return statement in function returning non-void [-Wreturn-type]
     }
     ^
prog.cpp: In member function ‘void var::forEach(void*)’:
prog.cpp:84:20: error: expected primary-expression before ‘typeof’
         if(type == typeof.object)
                    ^
prog.cpp:84:20: error: expected ‘)’ before ‘typeof’
prog.cpp:85:15: error: ‘Object’ was not declared in this scope
             ((Object*)(data))->forEach(f);
               ^
prog.cpp:85:22: error: expected primary-expression before ‘)’ token
             ((Object*)(data))->forEach(f);
                      ^
prog.cpp:86:61: error: no matching function for call to ‘Error::Error(const char [34])’
         else throw Error("Variable has no 'forEach' method.");
                                                             ^
prog.cpp:86:61: note: candidates are:
prog.cpp:11:7: note: Error::Error()
 class Error{
       ^
prog.cpp:11:7: note:   candidate expects 0 arguments, 1 provided
prog.cpp:11:7: note: Error::Error(const Error&)
prog.cpp:11:7: note:   no known conversion for argument 1 from ‘const char [34]’ to ‘const Error&’
prog.cpp: In member function ‘void var::forEach(void (*)(int, var))’:
prog.cpp:89:20: error: expected primary-expression before ‘typeof’
         if(type == typeof.object){
                    ^
prog.cpp:89:20: error: expected ‘)’ before ‘typeof’
prog.cpp: At global scope:
prog.cpp:98:5: error: ‘string’ does not name a type
     string * keys;
     ^
prog.cpp:101:5: error: ‘string’ does not name a type
     string * pKeys;
     ^
prog.cpp:105:27: error: expected ‘,’ or ‘...’ before ‘(’ token
     void forEach(void (*f)(string, var)){
                           ^
prog.cpp:110:21: error: ‘string’ has not been declared
     void instanceof(string constructor){
                     ^
prog.cpp:113:1: error: expected ‘;’ after class definition
 }
 ^
prog.cpp: In member function ‘void Object::forEach(void*)’:
prog.cpp:107:15: error: ‘void*’ is not a pointer-to-object type
             (*f)(keys[i], values[i]);
               ^
prog.cpp:107:18: error: ‘keys’ was not declared in this scope
             (*f)(keys[i], values[i]);
                  ^
prog.cpp: In member function ‘void Object::instanceof(int)’:
prog.cpp:111:32: warning: comparison with string literal results in unspecified behaviour [-Waddress]
         return (constructor == "Object");
                                ^
prog.cpp:111:32: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
prog.cpp:111:40: error: return-statement with a value, in function returning 'void' [-fpermissive]
         return (constructor == "Object");
                                        ^
prog.cpp: At global scope:
prog.cpp:117:1: error: expected ‘;’ after class definition
 }
 ^
stdout
Standard output is empty