【C/C++】クラスの役割ドメイン
949 ワード
C++言語ではグローバル変数の宣言が可能であり、クラスメンバーの実装はクラスの外部にあるため、役割ドメインの問題に遭遇することが多い.ここには普段出会った問題を簡単に列挙します.
一、クラスメンバー関数定義のパラメータ
簡単な例です.
ここで、NumはクラスTで定義されるタイプであり、setValueはクラスTのメンバー関数の定義(クラス外部)であるため、setValueはクラスの役割ドメインの範囲内にあるに違いない.もちろん、パラメータテーブルもクラスの役割ドメイン内にある.したがって、上記の使い方は合法的である.
二、メンバー関数の戻り値
パラメータタイプと比較して、戻り値のタイプはメンバー関数体の前にあるため、C++はNumがクラスの役割ドメイン内にあるとは考えず、上のコードをコンパイルするとコンパイラがエラーを報告します.正しい書き方は次のとおりです.
一、クラスメンバー関数定義のパラメータ
簡単な例です.
class T
{
public:
typedef double Num;
void setValue(Num num);
private:
Num value;
};
void T::setValue(Num num)
{
this->value = num;
}
ここで、NumはクラスTで定義されるタイプであり、setValueはクラスTのメンバー関数の定義(クラス外部)であるため、setValueはクラスの役割ドメインの範囲内にあるに違いない.もちろん、パラメータテーブルもクラスの役割ドメイン内にある.したがって、上記の使い方は合法的である.
二、メンバー関数の戻り値
class T
{
public:
typedef double Num;
Num getValue();
private:
Num value;
};
Num T::getValue()
{
return this->value;
}
パラメータタイプと比較して、戻り値のタイプはメンバー関数体の前にあるため、C++はNumがクラスの役割ドメイン内にあるとは考えず、上のコードをコンパイルするとコンパイラがエラーを報告します.正しい書き方は次のとおりです.
class T
{
public:
typedef double Num;
Num getValue();
private:
Num value;
};
T::Num T::getValue()
{
return this->value;
}