Есть ли typedef
эквивалент:
#define HashTabOf(i) htab[i]
и
#define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
?
Код находится в процессе переноса с C на C++.
Есть ли typedef
эквивалент:
#define HashTabOf(i) htab[i]
и
#define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
?
Код находится в процессе переноса с C на C++.
Не typedef, а способ С++:
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;
}
template
здесь? decltype(htab[i])
одинаково для любого действительного индекса i
.
- person 5gon12eder; 29.11.2015
Я бы реализовал шаблонное решение @Dani как:
inline auto & HashTabOf(size_t i) -> decltype(htab[0])
{
return htab[i];
}
Он действителен только в C++11. Он использует функцию под названием trailing-return-type, представленную C+. +11.
Преимущество этого решения в том, что это больше не шаблон. Вам не нужно упоминать 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]
напрямую?
typedef
? - person Oliver Charlesworth   schedule 21.04.2012