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

  • Jose LviS el Bambino ( JLB )   LviSito

    Jose LviS el

    3 ŞUBAT 2008
  • Abbeydabby0277's channel

    Abbeydabby02

    9 ŞUBAT 2012
  • Kap Slap

    Kap Slap

    8 Mart 2010