簡體   English   中英

構造函數中使用的C ++枚舉返回函數

[英]C++ Enum Returning Function to be Used in Constructor

我想從函數返回一個枚舉值,因為我的構造函數需要創建一個枚舉值。

我的課 :

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)

#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 ++ 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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM