2010-11-28 21 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

関数のスコープで型を作成できますが、関数を宣言することはできません。あなたはこれを行うことができます:

しかし、なぜ単にRectangleを宣言しないのですか?それは他の関数で使いたいと思っているほど役に立つと思われます。

1

C++では、関数定義を別の関数の中に書くことはできません。何かがある場合は、area関数のように、クラス宣言内に実装を記述する必要があります。

1

宣言(.h)と実装(.cpp)を区別する必要があります。私は「インライン」のご利用を信じ

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

ここに冗長である;:あなたは(nomallyシンプルな機能のために)あなたの宣言ファイル内のいくつかの機能を実装したい場合は、インライン予約語を使用する必要がありますクラス本体内で定義されたメンバ関数は暗黙的にインラインです。 – Dan

+0

@Dan:ここで述べたような単純な関数の場合、パフォーマンスのためにインラインが優先されます。この問題についてのこの質問を参照してください:http://stackoverflow.com/questions/145838/benefits-of-inline-functions-in-c – ArBR

関連する問題