У меня есть базовый класс Write
, в котором есть чисто виртуальная функция write (std::string text)
, для реализации которой требуются все производные классы.В базовом классе есть перегруженная функция write
, которая принимает int
и вызывает чисто виртуальный write()
.
. В производном классе мы реализуем write (std::string text)
, как требуется.
В основном я могу позвонить console.write("dog\n");
, но я не могу вызвать его с перегруженной версией, которая принимает int, не пройдя через имя базового класса Write
.В любом случае можно ли определить это наследование так, чтобы обе функции write
, одна из которых принимала std::string
, а другая - int
, не передавая подробности наследования, просматривая имя класса Write
,как показано в последней строке программы?
Я не хочу, чтобы пользователь мог вызывать перегруженное write(int)' through the
Write` имя класса, если это возможно.
#include <iostream>
class Write
{
protected:
virtual void write (const std::string &text) = 0;
public:
void write (const int &number)
{
write (std::to_string (number));
}
};
class Console_Write : public Write
{
public:
void write (const std::string &text) override
{
std::cout << text;
}
};
int main()
{
Console_Write console;
console.write("dog\n");
console.Write::write (1); // Is it possible to be able to change the inheritance so we can just call: console.write (1);
}