C ++枚举返回函数在构造函数中使用

时间:2013-04-22 06:37:36

标签: c++ function object constructor enums

我想从函数返回一个枚举值,因为我的构造函数需要创建一个枚举值。

我的课程:

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));

3 个答案:

答案 0 :(得分:0)

在类中进行枚举时,类名称就像命名空间一样。

class MyClass
{
  enum SomeType
  {
    Val
  };
};

MyClass::SomeType v = MyClass::Val;

答案 1 :(得分: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;

//枚举名称不考虑作为c ++ 98中的作用域         的std :: COUT&LT;

    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};

注意枚举类无法隐式转换为int

答案 2 :(得分:-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));