0

コンストラクターで列挙値を作成する必要があるため、関数から列挙値を返したいと考えています。

私のクラス :

class myBasket{
enum myType {type1, type2, type3} MT;
public:
myBasket(myType thetype) : MT(thetype){} 
}; 

以下の部分は私が作成したい関数ですが、列挙値を返す方法がわからないので、それが私の問題であるため、私が望むものを示すために書いています。必要に応じてヘッダーファイルに?

int bSize(int size){
return size;
}

呼びだし :

new myBasket(bSize(chosen_size));
4

3 に答える 3

0

c++98 (c++11 でも動作します)

#include <iostream>

class myClass
{
public:
    enum myBasket{one, two, three};

    myBasket bSize(myBasket size){
        return size;
    }

};

int main()
{
    myClass A;

//enum の名前は c++98 ではスコープと見なされません std::cout<

    return 0;
}

c++11

#include <iostream>

class myClass
{
public:
    enum myBasket{one, two, three};

    myBasket bSize(myBasket size){
        return size;
    }

};

int main()
{
    myClass A;
    //only worked on c++11, the enum name work as a scope
    std::cout<<A.bSize(myClass::myClass::one)<<std::endl;


    return 0;
}

c++ 11で列挙型を指定し、前方宣言も行うことができます

.hpp

enum class myBasket;

class myClass
{
public:


    myBasket bSize(myBasket size);

};

.cpp

enum class myBasket : int{one, two, three};

enum クラスは暗黙的に int に変換できないことに注意してください

于 2013-04-22T07:54:06.270 に答える
0

クラスで列挙を作成すると、クラス名は名前空間のように機能します。

class MyClass
{
  enum SomeType
  {
    Val
  };
};

MyClass::SomeType v = MyClass::Val;
于 2013-04-22T06:41:11.157 に答える
-1
enum myType {type1, type2, type3} MT;    
class myBasket{

public:
myBasket(myType thetype) : MT(thetype){} 
}; 

myType bSize(int size){
return somesize; //cant return the input value so modified
}

new myBasket(bSize(chosen_size));
于 2013-04-22T06:43:56.670 に答える