2

私が持っている同じクラス内で

Executive::Executive(std::istream& fin){

std::ifstream dFin(argv[2]);

if(!dFin.is_open()){
    std::cout <<"Could not open directives file.";
    std::cout <<endl;
}
else{
    std::string directive;
    dFin >>directive;

    int x;
    dFin >>x;


    if(directive=="print"){

    }

と関数

void Executive::print(int i) const{

if(i>MAX_NUM_POLYNOMIALS){
    std::cout <<"Sorry, " <<i <<" is not within the known polynomials.";
    std::cout <<endl;
}
else{       

    pNom[i].print(std::cout);
    std::cout << i <<'\n';
}

}

最初のコードの最後の部分で、2 番目のコードから print 関数を呼び出すにはどうすればよいでしょうか? それらは同じクラスにあり、それを呼び出すことと、2 番目の部分で別のクラスから呼び出される print 関数を混同したくありません。

4

3 に答える 3

1

独自の関数を呼び出していることを絶対に確認したい場合thisは、静的関数でない場合はキーワードを使用し、静的な場合はクラス名を使用できます。

this->print(...);またExecutive::print(...);

于 2013-09-13T03:02:07.970 に答える
0

メンバー関数を完全に修飾して呼び出すことができます。

Executive::Executive(std::istream& fin)
{
  // ...
  if(directive == "print")
  {
    Executive::print(x);
  }
  // ...
}

print非静的メソッドを別の異なるクラスに追加する場合、ここで名前が衝突する可能性はないことに注意してください。これは、それを含むクラスの外部からそのメソッドを実際に呼び出すには、それを呼び出すために何らかのインスタンスを参照する必要があるためです。

于 2013-09-13T03:01:16.323 に答える