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

C++ C++;要在构造函数中使用的枚举返回函数,c++,function,object,constructor,enums,C++,Function,Object,Constructor,Enums,我想从函数中返回一个枚举值,因为我的构造函数需要创建一个枚举值 我的班级: class myBasket{ enum myType {type1, type2, type3} MT; public: myBasket(myType thetype) : MT(thetype){} }; 下面的部分是我想要创建的函数,但我不知道如何返回枚举值,所以我写它只是为了向您展示我想要什么,因为这是我的问题,如果需要,我如何在头文件中识别它 int bSize(int size){ return si

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

我的班级:

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

在类中进行枚举时,类名的作用类似于命名空间

class MyClass
{
  enum SomeType
  {
    Val
  };
};

MyClass::SomeType v = MyClass::Val;
c++98(也适用于c++11)

c++11

.cpp


注意enum类不能隐式地转换为int

如果您希望类外的东西能够使用它,您应该在
public
部分声明
myType
,这可能是C++11中的新行为。它也不能直接回答这个问题。@jamesdlin老实说,我几乎不知道他在问什么。我不得不猜测:这里不需要
new
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));
#include <iostream>

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

    myBasket bSize(myBasket size){
        return size;
    }

};

int main()
{
    myClass A;
    return 0;
}
#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;
}
enum class myBasket;

class myClass
{
public:


    myBasket bSize(myBasket size);

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