2010-10-06 119 views
3

心中已经创建了这个类在这里:为什么不编译?

//整数矩形类

class AguiRectangle { 
    int x; 
    int y; 
    int width; 
    int height; 
public: 

    bool isEmpty { 

     return x == 0 && y == 0 && 
      width == 0 && height == 0; 
    } 

    int getTop() { 
     return x; 
    } 
    int getLeft() { 
     return y; 
    } 

    int getBottom() { 
     return y + height; 
    } 
    int getRight() { 
     return x + width; 
    } 

    AguiPoint getTopLeft() 
    { 
     return AguiPoint(getTop(),getLeft()); 
    } 
    AguiPoint getBottomRight() 
    { 
     return AguiPoint(this->getBottom(),this->getRight()); 
    } 
}; 

编译器告诉我,x和y的宽度和高度都除其他事项外未申报。这几乎就像班级没有看到自己。

感谢

Error 14 error C2673: 'getBottomRight' : global functions do not have 'this' pointers c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 178 
Error 16 error C2673: 'getBottomRight' : global functions do not have 'this' pointers c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 178 
Error 13 error C2665: 'AguiPoint::AguiPoint' : none of the 4 overloads could convert all the argument types c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 174 
Error 6 error C2628: 'AguiRectangle' followed by 'int' is illegal (did you forget a ';'?) c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 158 
Error 3 error C2473: 'isEmpty' : looks like a function definition, but there is no parameter list. c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 153 
Error 5 error C2238: unexpected token(s) preceding ';' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 156 
Error 17 error C2227: left of '->getRight' must point to class/struct/union/generic type c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 178 
Error 15 error C2227: left of '->getBottom' must point to class/struct/union/generic type c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 178 
Error 2 error C2146: syntax error : missing ';' before identifier 'result' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 64 
Error 19 error C2143: syntax error : missing ';' before '}' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 180 
Error 21 error C2079: 'pp' uses undefined class 'AguiPointf' c:\Users\Josh\Documents\Visual Studio 2008\Projects\Agui\Alleg_5\main.cpp 35 
Error 8 error C2065: 'y' : undeclared identifier c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 162 
Error 9 error C2065: 'y' : undeclared identifier c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 166 
Error 7 error C2065: 'x' : undeclared identifier c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 159 
Error 11 error C2065: 'x' : undeclared identifier c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 169 
Error 12 error C2065: 'width' : undeclared identifier c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 169 
Error 10 error C2065: 'height' : undeclared identifier c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 166 
Error 4 error C2059: syntax error : 'return' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 155 
Error 18 error C2059: syntax error : '}' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 180 
Error 20 error C2059: syntax error : '}' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 180 
Error 1 error C2027: use of undefined type 'AguiPointf' c:\users\josh\documents\visual studio 2008\projects\agui\alleg_5\Agui\AguiBaseTypes.h 59 
+0

请给予更多的上下文信息,据我可以看到你的代码是正确的。 – WolfgangA 2010-10-06 13:27:49

+0

“其中之一”?像什么? – 2010-10-06 13:28:16

+0

也许你的编译器需要一个属性'public','private'或'protected'。通常,一个类的默认存储为'private',一个结构的默认存储''public''。 – Benoit 2010-10-06 13:29:56

回答

10

应该

bool isEmpty() 

,而不是

bool isEmpty 
7

如果您使用bool isEmpty() { ... }

3

我能找到的第一个错误是

bool isEmpty { 

应该成为

bool isEmpty() const { 
+0

+1添加const; P – stijn 2010-10-06 13:39:46

+0

const是做什么的? (在这种情况下) – jmasterx 2010-10-06 13:43:43

+0

类的const方法被禁止修改成员变量。如果该方法执行或调用非const方法,则会导致编译器错误 – 2010-10-06 13:48:59