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

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • spyib

    spyib

    9 Ocak 2007
  • UniqueApps

    UniqueApps

    4 Ocak 2009