久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何在 C++11 中輸出枚舉類的值

How can I output the value of an enum class in C++11(如何在 C++11 中輸出枚舉類的值)
本文介紹了如何在 C++11 中輸出枚舉類的值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

如何在 C++11 中輸出 enum class 的值?在 C++03 中是這樣的:

How can I output the value of an enum class in C++11? In C++03 it's like this:

#include <iostream>

using namespace std;

enum A {
  a = 1,
  b = 69,
  c= 666
};

int main () {
  A a = A::c;
  cout << a << endl;
}

在 c++0x 中,此代碼無法編譯

in c++0x this code doesn't compile

#include <iostream>

using namespace std;

enum class A {
  a = 1,
  b = 69,
  c= 666
};

int main () {
  A a = A::c;
  cout << a << endl;
}


prog.cpp:13:11: error: cannot bind 'std::ostream' lvalue to 'std::basic_ostream<char>&&'
/usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/ostream:579:5: error:   initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char, _Traits = std::char_traits<char>, _Tp = A]'

編譯于 Ideone.com

推薦答案

與無作用域枚舉不同,有作用域枚舉不能隱式轉換為其整數值.您需要顯式使用強制轉換將其轉換為整數:

Unlike an unscoped enumeration, a scoped enumeration is not implicitly convertible to its integer value. You need to explicitly convert it to an integer using a cast:

std::cout << static_cast<std::underlying_type<A>::type>(a) << std::endl;

您可能希望將邏輯封裝到函數模板中:

You may want to encapsulate the logic into a function template:

template <typename Enumeration>
auto as_integer(Enumeration const value)
    -> typename std::underlying_type<Enumeration>::type
{
    return static_cast<typename std::underlying_type<Enumeration>::type>(value);
}

用作:

std::cout << as_integer(a) << std::endl;

這篇關于如何在 C++11 中輸出枚舉類的值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Difference between std::reference_wrapper and simple pointer?(std::reference_wrapper 和簡單指針的區別?)
Difference between const. pointer and reference?(常量之間的區別.指針和引用?)
How to access the contents of a vector from a pointer to the vector in C++?(c++ - 如何從指向向量的指針訪問向量的內容?)
Meaning of *amp; and **amp; in C++(*amp; 的含義和**amp;在 C++ 中)
Why can#39;t I do polymorphism with normal variables?(為什么我不能對普通變量進行多態?)
Dereferencing deleted pointers always result in an Access Violation?(取消引用已刪除的指針總是會導致訪問沖突?)
主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 91在线网站 | 亚洲精品99 | 中文字幕欧美日韩 | 日韩电影一区 | 国产一区在线视频 | 色婷综合网 | 97精品一区二区 | 婷婷精品 | 一级国产精品一级国产精品片 | 国产成人一区二区三区电影 | 91av在线免费看 | 午夜在线视频 | 亚洲精品一区二区三区蜜桃久 | 日韩精品一区二区三区老鸭窝 | 精品国产一区二区三区四区在线 | 视频1区2区 | 99精品国产一区二区青青牛奶 | 欧美一区二区三区久久精品 | 国产精品久久久久久一区二区三区 | 奇米影视首页 | 欧美又大粗又爽又黄大片视频 | 91在线视频在线观看 | 九色在线观看 | 亚洲国产欧美精品 | 91久久久久久久久 | 精品一二三区在线观看 | 日本在线网址 | 日韩欧美视频 | 一区二区三区观看视频 | 成人久久久久 | 亚洲精品一区二区在线观看 | 久久五月婷 | 免费观看av| 欧美日韩在线播放 | 天天干天天爱天天 | www.av在线 | 精品欧美一区二区三区久久久 | 国产成人一区二区三区精 | 日韩午夜 | 亚洲喷水 |