2

これは簡単かもしれませんが、目の前にあるものを見逃しているだけかもしれません。ただし、参照によって渡された関数パラメーターを変更できるようにする方法がわかりません。基本的に、次のものが必要です。

bool calculate(double lat, double lon, double dep, 
               double &x, double &y, double &z)
{
    if (x, y, AND z are NOT const)
    {
        perform the proper calculations
        assign x, y, and z their new values
        return true;
    }
    else //x, y, or z are const
    {
        return false;
    }
}

「if」文のチェックだけで十分です

繰り返しますが、これが既にこのサイトにある場合、または目の前に欠けているのが標準ライブラリ関数である場合はお詫び申し上げます。私はいつもここに来て、事実上常に良い答えを得ていますが、これについてはすでにここに何も見つかりませんでした.

4

1 に答える 1

8

あなたが持っている場合double &x、それは定数ではありません。持っている場合const double &x、それは定数です。

あなたの場合 - チェックする必要はありません。それらは定数ではありません。チェックはコンパイル時に自動的に実行されます。

これを参照してください:

void func(double &x){  X=3.14;  }

double d;
const double c_d;
func(d); // this is OK
func(1.54); // this will give an ERROR in compilation
func(c_d);  // this will also give an ERROR in compilation

const定数を使用した (非) 参照を必要とする関数を呼び出すことはできません。

これは、コンパイラがいくつかのバグを見つけることを意味します-あなたの場合のように、trueまたはを返すfalse必要はなく、バグを見つけようとするためにそれをチェックする必要はありません-単にコンパイルすると、コンパイラはこれらのバグを見つけますあなたのために。

于 2013-10-01T22:07:46.557 に答える