1

typedef以下に相当するものはありますか:

#define HashTabOf(i)    htab[i]

#define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)

?

このコードは、C から C++ に移植中です

4

2 に答える 2

4

typedef ではありませんが、C++ の方法は次のとおりです。

template <typename T>
inline T &HashTabOf(size_t i)
{
    return htab[i];
}

inline size_t MAXCODE(size_t n_bits)
{
    return (1 << n_bits) - 1;
}
于 2012-04-21T12:48:21.040 に答える
3

@Dani のテンプレート ソリューションを次のように実装します。

inline auto & HashTabOf(size_t i) -> decltype(htab[0])
{
    return htab[i];
}

C++11 でのみ有効です。C++11 で導入された、trailing-return-typeと呼ばれる機能を使用します。

このソリューションの良い点は、もはやテンプレートではないということです。T使用するときに言及する必要はありませんが、@Daniのソリューションでは言及する必要がありTます。

auto item = HashTabOf<Type>(4); //Dani's solution 
auto item = HashTabOf(4);       //My solution

そして、はい、これを簡単に書くことができます:

inline int & HashofTable(size_t i)
{ 
   return htab[i]; 
}

htab[i]また、直接使用しないのはなぜですか?

于 2012-04-21T12:50:21.410 に答える