构造函数中使用的c++ Enum返回函数

C++ Enum Returning Function to be Used in Constructor

本文关键字:Enum 返回 函数 c++ 构造函数      更新时间:2023-10-16

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

My class:

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

下面的部分是我想要创建的函数,但我不知道如何返回enum值,所以我只是写它来告诉你我想要什么,因为这是我的问题,如果需要,我如何在头文件中识别它?

int bSize(int size){
return size;
}

The Calling:

new myBasket(bSize(chosen_size));

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<

    return 0;
}
c++>

#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

在类中创建枚举时,类名就像一个命名空间。

class MyClass
{
  enum SomeType
  {
    Val
  };
};
MyClass::SomeType v = MyClass::Val;
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));