I am trying to replace an attribute of a class (attribute that is a glass class type) with another daughter class of the glass class.
NOTE: I usually use #ifndef, but to leave the smaller example I didn't use
main.cpp
#include <iostream>
#include "Car.h"
#include "ArmoredGlass.h"
using namespace std;
int main(int argc, char** argv) {
Car car;
ArmoredGlass armoredGlass;
car.glasses = armoredGlass;
car.glasses.punch();
return 0;
}
Car.h
#include "Glass.h"
class Car {
public:
Glass glasses;
};
Glass.h
#include <iostream>
using namespace std;
class Glass {
public:
virtual void punch() {
cout << "break" << endl;
}
};
ArmoredGlass.cpp
#include <iostream>
using namespace std;
class ArmoredGlass : public Glass {
public:
virtual void punch() {
cout << "nothing..." << endl;
}
};
Reponse:
break
Expected response:
nothing...