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

  • BuzzFeedVideo

    BuzzFeedVide

    10 AĞUSTOS 2011
  • Evan Coury

    Evan Coury

    29 NİSAN 2007
  • the one am radio

    the one am r

    6 Mayıs 2006