#include <iostream>
struct Coord{
int x = 1;
int y = 1;
void printCoord(){
std::cout << "X: " << x << " Y: " << y << std::endl;
}
};
class Base{
public:
Coord myCoord;
Base(Coord &coord): myCoord(coord){} // How do I modify this line so Base gets a copy of myCoord?
virtual void updateCoord(int x, int y){};
};
class Derived : public Base {
public:
Derived(Coord &coord): Base(coord){} // Or possibly this line?
virtual void updateCoord(int x, int y){
myCoord.x = x;
myCoord.y = y;
std::cout << "Updated to:" << std::endl;
myCoord.printCoord();
}
};
int main(){
Coord myCoord;
Base *baseptr;
Derived d(myCoord);
baseptr = &d;
std::cout << "Before update:" << std::endl;
myCoord.printCoord();
baseptr->updateCoord(2,2);
std::cout << "After update:" << std::endl;
myCoord.printCoord();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IENvb3JkewogIGludCB4ID0gMTsKICBpbnQgeSA9IDE7CiAgdm9pZCBwcmludENvb3JkKCl7CiAgICBzdGQ6OmNvdXQgPDwgIlg6ICIgPDwgeCA8PCAiIFk6ICIgPDwgeSA8PCBzdGQ6OmVuZGw7CiAgfQp9OwoKY2xhc3MgQmFzZXsKCiAgcHVibGljOgogIENvb3JkIG15Q29vcmQ7CiAgQmFzZShDb29yZCAmY29vcmQpOiBteUNvb3JkKGNvb3JkKXt9IC8vIEhvdyBkbyBJIG1vZGlmeSB0aGlzIGxpbmUgc28gQmFzZSBnZXRzIGEgY29weSBvZiBteUNvb3JkPwogIHZpcnR1YWwgdm9pZCB1cGRhdGVDb29yZChpbnQgeCwgaW50IHkpe307Cgp9OwoKY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKCiAgcHVibGljOgogIERlcml2ZWQoQ29vcmQgJmNvb3JkKTogQmFzZShjb29yZCl7fSAvLyBPciBwb3NzaWJseSB0aGlzIGxpbmU/CiAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvb3JkKGludCB4LCBpbnQgeSl7IAogICAgbXlDb29yZC54ID0geDsKICAgIG15Q29vcmQueSA9IHk7ICAKICAgIHN0ZDo6Y291dCA8PCAiVXBkYXRlZCB0bzoiIDw8IHN0ZDo6ZW5kbDsKICAgIG15Q29vcmQucHJpbnRDb29yZCgpOwogIH0KfTsKCmludCBtYWluKCl7CiAgQ29vcmQgbXlDb29yZDsKICBCYXNlICpiYXNlcHRyOwogIERlcml2ZWQgZChteUNvb3JkKTsKICBiYXNlcHRyID0gJmQ7CgogIHN0ZDo6Y291dCA8PCAiQmVmb3JlIHVwZGF0ZToiIDw8IHN0ZDo6ZW5kbDsKICBteUNvb3JkLnByaW50Q29vcmQoKTsKICBiYXNlcHRyLT51cGRhdGVDb29yZCgyLDIpOwogIHN0ZDo6Y291dCA8PCAiQWZ0ZXIgdXBkYXRlOiIgPDwgc3RkOjplbmRsOwogIG15Q29vcmQucHJpbnRDb29yZCgpOwoKICByZXR1cm4gMDsKfQ==