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

  • paulandstorm

    paulandstorm

    4 EYLÜL 2006
  • TopDJMag TV

    TopDJMag TV

    29 Temmuz 2010
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009