Я играю с тестовым классом, который я создал.Код связан ниже.
template<bool...rest_of_string>
class bitstring
{
public:
void print_this_handler()
{
cout << " END";
}
};
template<bool A, bool... rest_of_string>
class bitstring<A, rest_of_string...> : public bitstring<rest_of_string...>
{
public:
static const bool value = A;
bitstring(){}
void print_this()
{
cout << "\nPrinting Bitstring with " << sizeof...(rest_of_string) << " bits: ";
print_this_handler();
}
protected:
void print_this_handler()
{
cout << A;
static_cast<bitstring<rest_of_string...> >(*this).print_this_handler();
}
};
int main()
{
bitstring<0,1,0,1,0,1,1,0> str;
str.print_this();
}
Я сталкиваюсь с ошибкой, когда вызываю print_this_handler () изнутри print_this ().Это говорит о том, что print_this_handler () защищен в классе bitstring.Однако каждый класс происходит от цепочки битов, так почему я не могу получить доступ к следующему по величине классу?Когда я меняю защищенный на общедоступный, все работает нормально, но мне просто любопытно, почему это не работает.Спасибо.
Точное сообщение об ошибке скопировано ниже:
C:\Users\main.cpp|195|error: 'void bitstring<A, rest_of_string ...>::print_this_handler() [with bool A = true; bool ...rest_of_string = {false, true, false, true, true, false}]' is protected within this context|