Ваш интерфейс определен во время компиляции, поэтому он исправлен во время выполнения. Но вы можете добавить функциональность к существующим классам с шаблоном посетителя через полиморфизм времени выполнения.
Просто создайте два интерфейса: один посетитель и второй посетитель, передайте посетителю доступный объект и вычислите логику GetCapacity внутри.
Пример
class myClass;
class visitor {
virtual void handle(myClass cl);
}
class iVisitable {
virtual void visit(visitor& v);
}
class myClass : public iVisitable{
void visit(visitor& v){
v.handle(this);
}
}
//Put getCapacity logic here and pass it to myClass
class getCapacityVisitor : iVisitor { } ...
Является ли это домашнее задание? – Fuhrmanator