I have two classes of the form:
class DNumber
{
static int Digits;
virtual DNumber* add(const DNumber* a, unsigned digits) const = 0;
DNumber* add(const DNumber* a) const {return add(a, Digits);}
}
class DInteger : public DNumber
{
// implementation uses runtime type checking to perform addition
DInteger(int value);
DNumber* add(const DNumber* a, unsigned digits) const;
}
class DNumber
{
static int Digits;
virtual DNumber* add(const DNumber* a, unsigned digits) const = 0;
DNumber* add(const DNumber* a) const {return add(a, Digits);}
}
class DInteger : public DNumber
{
// implementation uses runtime type checking to perform addition
DInteger(int value);
DNumber* add(const DNumber* a, unsigned digits) const;
}
To copy to clipboard, switch view to plain text mode
Attempting to use this:
DInteger* cien = new DInteger(100);
DInteger* dos = cien->add(cien);
qDebug() << dos->toString();
delete cien, delete dos;
DInteger* cien = new DInteger(100);
DInteger* dos = cien->add(cien);
qDebug() << dos->toString();
delete cien, delete dos;
To copy to clipboard, switch view to plain text mode
Results in a compile error:
error: no matching function for call to 'DInteger::add(DInteger*&)'
DInteger should inherit add(DNumber*) right?
Bookmarks