2009-07-18 15 views
3

はちょうど例えばC++列挙型の関数を宣言できますか?

に列挙型の関数を宣言することが可能である場合には不思議:

class myclass{ 
    //.... 
    enum myenum{ a, b, c, d}; 
    myenum function(); 
    //.... 
    }; 

    myenum function() 
    { 
     //.... 
    } 

答えて

6

は、はい、列挙型を返すために非常に一般的です。

関数が使用したいので、あなたのenumをクラスの外に置いてもらいたいでしょう。または、関数の列挙型の戻り値の型をクラス名で指定します(列挙型はクラス定義のパブリック部分になければなりません)。

class myclass 
{ 
public: 
    enum myenum{ a, b, c, d}; 

    //.... 

    myenum function(); 

    //.... 
}; 

myClass::myenum function() 
{ 
    //.... 
} 
+0

どうもありがとうございました。 – trikker

1

はい、間違いなく。

2

ただ、列挙型は、あなたのクラスのpublicセクションであることを確認してください。

class myclass 
{ 
    public: 
    enum myenum{POSITIVE, ZERO, NEGATIVE}; 
    myenum function(int n) 
    { 
     if (n > 0) return POSITIVE; 
     else if (n == 0) return ZERO; 
     else return NEGATIVE; 
    } 
}; 

bool test(int n) 
{ 
    myclass C; 
    if (C.function(n) == myclass::POSITIVE) 
     return true; 
    else 
     return n == -5; 
} 
関連する問題