1

私が達成しようとしていることによって、質問を説明します。

Parameterクラスがあるとします。

class Parameter
{
private:
    float _parameter, _parameterScaler;

public:

    Parameter()
    {
        _parameter = 1;
        _parameterScaler = 0.5;
    }

    void SetValue(float value)
    {
        _parameter = value;
    }

    void SetValueOffset(float value)
    {
        _parameterScaler = value;
    }

    float "use of variable of this class"
    {
        return _parameter * _parameterScaler;
    }

}

このクラスは 2 つの float を保持します。そのうちの 1 つはパラメーター valueで、もう 1 つはパラメーター multiplierです。

ここで、タイプParameterの変数を次のように使用するとします。

int main()
{
    Parameter param;
    param.SetValue(5);
    param.SetValueOffset(0.5);

    printf("%6.2f", param);
}

2.5 と表示されます。

たとえば、 () を使用して演算子のオーバーロードを行うと、このような効果を得ることができます。変数の使用法だけで可能ですか?

4

1 に答える 1

3

いいえ、そうではありませんprintf。パラメーターに何もしないためです-キャストや変換を適用せず、それらの型を無視します。

あなたができることは、そのようstd::coutに代わりに使用してオーバーロードすることですostream& operator << (ostream& str, const Parameter&)

std::cout << param; 

印刷したいものを正確に印刷します。

コードは、キャストを行わずに であるかのようにprintf("%6.2f", param);処理します (全体的に悪いです)。それをしないでください!paramfloat

于 2012-10-14T14:43:43.760 に答える