#include <iostream>
class TextInput
{
public:
std::string value;
virtual void add(char c) { value += c; }
std::string getValue() { return value; }
};
class NumericInput : public TextInput
{
public:
void add(char c)
{
if (isdigit(c)) { TextInput::add(c); }
}
// You already get this for free from the inheritance
// std::string getValue()
// {
// return value;
// }
};
int main()
{
TextInput* input = new NumericInput();
input->add('1');
input->add('a');
input->add('0');
std::cout << input->getValue();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgVGV4dElucHV0CnsKcHVibGljOgogICAgc3RkOjpzdHJpbmcgdmFsdWU7CiAgICB2aXJ0dWFsIHZvaWQgYWRkKGNoYXIgYykgIHsgdmFsdWUgKz0gYzsgfQogICAgc3RkOjpzdHJpbmcgZ2V0VmFsdWUoKSB7IHJldHVybiB2YWx1ZTsgfQp9OwoKY2xhc3MgTnVtZXJpY0lucHV0IDogcHVibGljIFRleHRJbnB1dCAKewpwdWJsaWM6CiAgICB2b2lkIGFkZChjaGFyIGMpCiAgICB7CiAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsgVGV4dElucHV0OjphZGQoYyk7IH0KICAgIH0KCiAgICAvLyBZb3UgYWxyZWFkeSBnZXQgdGhpcyBmb3IgZnJlZSBmcm9tIHRoZSBpbmhlcml0YW5jZQogICAgLy8gc3RkOjpzdHJpbmcgZ2V0VmFsdWUoKQogICAgLy8gewogICAgLy8gICAgIHJldHVybiB2YWx1ZTsKICAgIC8vIH0KfTsKCmludCBtYWluKCkKewogICAgVGV4dElucHV0KiBpbnB1dCA9IG5ldyBOdW1lcmljSW5wdXQoKTsKICAgIGlucHV0LT5hZGQoJzEnKTsKICAgIGlucHV0LT5hZGQoJ2EnKTsKICAgIGlucHV0LT5hZGQoJzAnKTsKICAgIHN0ZDo6Y291dCA8PCBpbnB1dC0+Z2V0VmFsdWUoKTsKfQ==