#include <stdio.h>
class Collection {
public:
Collection() {
}
virtual ~Collection() {
}
virtual void add(const Collection& c) {
printf("Added c elements here\n");
}
};
class Set: public Collection {
public:
Set() {
}
virtual ~Set() {
}
};
class SortedSet: public Set {
public:
SortedSet() {
}
virtual ~SortedSet() {
}
};
int main(){
Set *s = new Set();
SortedSet *ss = new SortedSet();
ss->add(*s);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjbGFzcyBDb2xsZWN0aW9uIHsKcHVibGljOgogICAgQ29sbGVjdGlvbigpIHsKICAgIH0KICAgIHZpcnR1YWwgfkNvbGxlY3Rpb24oKSB7CiAgICB9CiAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IENvbGxlY3Rpb24mIGMpIHsKICAgICAgICBwcmludGYoIkFkZGVkIGMgZWxlbWVudHMgaGVyZVxuIik7CiAgICB9Cn07CmNsYXNzIFNldDogcHVibGljIENvbGxlY3Rpb24gewpwdWJsaWM6CiAgICBTZXQoKSB7CiAgICB9CiAgICB2aXJ0dWFsIH5TZXQoKSB7CiAgICB9Cn07CmNsYXNzIFNvcnRlZFNldDogcHVibGljIFNldCB7CnB1YmxpYzoKICAgIFNvcnRlZFNldCgpIHsKICAgIH0KICAgIHZpcnR1YWwgflNvcnRlZFNldCgpIHsKICAgIH0KfTsKCmludCBtYWluKCl7CiAgU2V0ICpzID0gbmV3IFNldCgpOwogIFNvcnRlZFNldCAqc3MgPSBuZXcgU29ydGVkU2V0KCk7CiAgc3MtPmFkZCgqcyk7CiAgcmV0dXJuIDA7Cn0K