2010-11-28 79 views
0
class Rectangle { 
    int x, y; 
    public: 
    void set_values (int,int); 
    int area (void) {return (x*y);} 
}; 

void Rectangle::set_values (int a, int b) { 
    x = a; 
    y = b; 
} 

我有這個類的其他類 它給錯誤的函數中:一個函數的定義在這裏不允許使用之前,「{」令牌 你能說我爲什麼?C++類定義

回答

0

您可以在函數作用域中創建一個類型,但不能在那裏聲明函數。你可以這樣做:

class Rectangle { 
    int x, y; 
    public: 
     void set_values (int a, int b) { x = a; y = b; } 
     int area (void) { return (x*y); } 
}; 

但是,爲什麼不直接聲明矩形?在其他功能中使用它似乎很有用。

1

你不能在C++的另一個函數中寫一個函數定義。如果有的話,你需要在你的類聲明中寫下實現,就像你使用area函數一樣。

1

您應該將您的聲明(.h)與您的實現(.cpp)分開。如果你想實現一些功能,在你的聲明文件(nomally一些簡單的功能),你應該使用直列保留字

Rectangle.h 
class Rectangle { 
    int x, y; 
    public: 
    void set_values (int,int); 
    inline int area (void) {return (x*y);} 
}; 

Rectangle.cpp 
#include Rectangle.h 

void Rectangle::set_values (int a, int b) { 
    x = a; 
    y = b; 
} 
+0

我相信你的「內聯」的使用是多餘的位置;在類體內定義的成員函數是隱式內聯的。 – Dan 2010-11-28 04:20:36