0

私は c++ クラスに非常に慣れていないので、これはおそらく非常に明白な質問ですが、専門用語にまだ慣れていないため、正しい検索用語を取得できないようです。

とにかく、私がやろうとしているのは、クラス内のパブリック関数が同じクラス内のプライベート関数にアクセスすることです。

例えば

//.h file:

class foo {

float useful(float, float);

public:

int bar(float);

};

//.cpp file:

int foo::useful(float a, float b){
//does something and returns an int
}

int foo::bar(float a){
//how do I access the 'useful' function in foo?? eg something like
return useful(a, 0.8); //but this doesnt compile
}
4

3 に答える 3

2

関数usefulは を返すように宣言されてfloatいますが、 を返すように定義していますint

対比

float useful(float, float);

int foo::useful(float a, float b){
    //does something and returns an int
}

宣言を変更しint useful(float, float)て関数から何かを返すと、正常に機能します。

于 2011-04-08T01:27:13.470 に答える
1

戻り値の型が一致しません:

//.h file:

class foo {

float useful(float, float);      // <--- THIS ONE IS FLOAT ....

public:

int bar(float);

};

//.cpp file:

int foo::useful(float a, float b){       // <-- ...THIS ONE IS INT. WHICH ONE?
//does something and returns an int
}

int foo::bar(float a){
//how do I access the 'useful' function in foo?? eg something like
return useful(a, 0.8); //but this doesnt compile
}

コンパイラは、完全に一致する関数定義を探します。float useful()あなたが得ているコンパイラエラーは、おそらくそれが a) を見つけることができない、または b) について話しているときにあなたが何を意味するのか分からないという事実について不平を言っていますint useful.

それらが一致していることを確認すると、呼び出しが正常に機能usefulするbarはずです。

于 2011-04-08T01:28:18.330 に答える
0

コンパイラが表示するエラー メッセージを投稿していないので、推測します。の戻り値の型がuseful().h と .cpp ファイルで一致しません。それらを一致させると (両方とも int または両方とも float)、すべてが期待どおりに機能するはずです。

于 2011-04-08T01:29:18.537 に答える