SORU
2 Aralık 2011, Cuma


Nasıl otomatik olarak int içine kesinlikle yazılmış numaralama dönüştürmek için?

#include <iostream>

struct a
{
  enum LOCAL_A
  {
    A1,
    A2
  };
};
enum class b
{
    B1,
    B2
};

int foo( int input )
{
    return input;
}

int main(void)
{
    std::cout<<foo(a::A1)<<std::endl;
    std::cout<<foo(static_cast<int>(b::B2))<<std::endl;
}

a::LOCAL_A Ne türü kesin belirlenmiş numaralama olduğunu amaçlıyorsunuz, ama küçük bir farkla : normal çeteleler dönüştürülebilir tamsayı yazın ise kesinlikle yazılmış çeteleler yapamaz onsuz bir döküm.

Bir dökme olmadan bir tamsayı türü kesin belirlenmiş bir numaralandırma değeri dönüştürmek için bir yol var mı? Evet ise, nasıl?

CEVAP
2 Aralık 2011, Cuma


Herkesin dediği gibi, örtülü bir dönüşüm var ve bu tasarım.

Eğer isterseniz dökme temel türünü belirlemek için gerekli kurtulabilirsiniz.

template <typename E>
constexpr typename std::underlying_type<E>::type to_underlying(E e) {
    return static_cast<typename std::underlying_type<E>::type>(e);
}

std::cout << foo(to_underlying(b::B2)) << std::endl;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013