2017-12-09 221 views
1

ポインタが関数に渡された場合、このポインタはINパラメータです。inまたはin/outパラメータですか? Doxygen、C++

ポインタが関数に渡されて読み込み専用になっているが、この関数が読み込み専用操作のモジュール関連関数でポインタのコピーにアクセスできるようにする場合、このポインタはINのままです。

関数がまだポインタを読み取り専用として使用していて、他のモジュール関連関数がポインタを書き込み操作に使用している場合、ポインタは何を作成しますか? INパラメータですが、constはありませんか?イン/アウトパラメータ?私が言いたいの

例:

class SteeringWheel { 
     public: float rotation; 
     public: SteeringWheel(void) { 
       this->rotation = 0.f; 
     } 
}; 

class Car { 
     private: SteeringWheel *steeringWheel; 
     public: 

     /** 
     * @param[?] steeringWheel Is the steering wheel in or in/out? 
     */ 
     Car (SteeringWheel *steeringWheel) { 
       this->steeringWheel = steeringWheel; 
     } 

     /** 
     * @param[in] degree Steering amount in degrees. 
     */ 
     void steer(float degree) 
     { 
       this->steeringWheel->rotation += degree; 
     } 
}; 

int main(int argc, char **argv) 
{ 
     SteeringWheel steeringWheel(); 

     /* car() uses steeringWheel as read only. */ 
     Car car(&steeringWheel); 

     /* steer() uses steeringWheel from car() to write. */ 
     car.steer(50.f); 

     return 0; 
} 

答えて

0

私はinout指定子は正確にあなたが何を考えているわけではないと信じています。 Doxygen documentation of the param tagから:

の\のparamコマンドは、パラメータの 方向を指定して、任意の属性、(DIR)を持っています。可能な値は "[in]"、 "[in、out]"、 および "[out]"ですが、この説明の[角かっこ]に注意してください。 パラメータが入出力の場合、属性として[in、out]が使用されます。

パラメータの方向は、通常、以下の意味:

  • in:パラメータは、入力としての機能に注入し、それだけには書き込まれません。
  • out:パラメータは関数には注入されますが、入力には注入されません。むしろ、それは関数によって書き込まれます。
  • in, out:パラメータは入力として関数に注入され、最終的に関数によって書き込まれます。あなたの例では

/** 
* @param[?] steeringWheel Is the steering wheel in or in/out? 
*/ 
Car (SteeringWheel *steeringWheel) { 
    this->steeringWheel = steeringWheel; 
} 

私はあなたがそれを注入し、あなたの方法でそれを使用しているため、steeringWheelパラメータがinだと思います。しかし、それに書き込むことは決してありません(つまり、パラメータそのもの)、outではありません。言い換えれば、メソッドには住所だけをあなたの関数に注入するだけです。 degreeパラメータを注入する2番目の方法にも同じことが適用されますが、書き込むことはありません。私たちは、パラメータに新しい値を直接書き込ん

/** 
* @param[out] p_param We write to the parameter! 
*/ 
void makeFour(int * p_param) 
{ 
    p_param = new int; // Out because of this line! 
    *p_param = 4; 
} 

お知らせ:

inoutの意味について、もう少し明確にするために、ここでoutパラメータの一例です。これはoutの意味です:パラメータからメソッドの情報が出てきます。次のように書くことができます:

int main() 
{ 
    int myInt = 0; 
    std::cout << myInt; // prints 0. 

    void makeFour(&myInt); // p_param == &myInt here. 
    std::cout << myInt; // prints 4: the method wrote directly 
          // in the parameter (out)! 

    delete myInt; 

    return 0; 
} 

関連する問題