2

列挙とフロートについて質問があります。フロートとして列挙型を渡そうとしていますが、これは可能ですか?

コードの概要は次のとおりです。

enum
{
    none = 0,
    small,
    medium,
    large, 
} enumSize;

class size
{
    float footsize = 0.0; 
}

void setSize(size &Size, float value)
{
    Size.footsize = value; 
}

int main()
{ 
    size Size; 
    setSize(Size, enumSize); 
}

ただし、私が知る限り、列挙型はintのみであり、floatとしてキャストできないため、setSize(Size、enumSize)を呼び出すことはできません。その場合、現在の設定でフロートにする方法はありますか?

レイアウトが少しわかりにくい場合はお知らせください。混乱が生じた場合は、できる限り対処するように努めます。

4

2 に答える 2

4

もちろん、intはfloatにキャストできますが、enumはこれに適したツールではありません。sを使用するだけconst floatです。

ちなみに、コードは他のいくつかの理由でもコンパイルされません。

于 2012-11-26T19:36:44.420 に答える
1

キャストは必要ありません。変換だけです。通常の列挙型は整数値であり、それらの1つをfloatを受け取る関数に渡すと、値はfloatに変換されます。

enum enumSize {
    none,
    small,
    medium,
    large
};

void f(float);

void g() {
    f(small);
}
于 2012-11-26T20:11:52.847 に答える