-1

このクラスに内部構造体が与えられたとしましょう。

class Some {
   public:
    struct Crap{};
    Crap Process(Crap& c);
}


Some::Crap Some::Process(Crap& crap) {   Crap moreCrap = ..  }

「プロセス」の戻り値の型 (Some::Crap) がスコープされていることは、私には理にかなっています。

「プロセス」の本体内でスコーピングが必要ないことは、私には理にかなっています。

Process (Crap& crap) の内部構造体パラメーターがスコープを必要としない理由がわかりません。

誰かがこれについて何か洞察を持っていますか? ありがとう

4

3 に答える 3

3

実際、パラメーターの型を修飾する必要があります (例が正しくなく、のメンバー関数にするつもりでない限りProcess) Some

于 2010-11-01T17:52:00.157 に答える
2

次のスニペットを想定します。

class Some
{
public:
    struct Crap{};
    Crap Process(Crap&);
};

Some::Crap Some::Process(Crap& crap) { ... }

基本的に、データ メンバーとメンバー関数にアクセスするCrap必要がないのと同じ理由で、関数パラメーター リストと本体内のスコープは必要ありません。同じスコープにあるため、暗黙的です。this->

戻り値の型が必要な理由は、パーサーがメソッド名の前に戻り値の型に遭遇し、その時点でスコープを推測できない (必要ではない?) からです。

于 2010-11-01T18:09:09.147 に答える
0

質問のタイトルには「メンバー関数」と書かれていますが、例にはメンバー関数が含まれていません。Some::Processただではなく、あなたが意味したと仮定しますProcess

メンバー関数定義のクラス スコープは、(ではなく で始まります{。このようなものをより短く入力できるように、その理由は正確であると思います。

于 2010-11-01T17:51:48.093 に答える