2010-10-06 114 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