So I saw this thread: What does it mean to "program to an interface"?. Which talks about declaring a Parent, but initializing it as a Child. Is it possible to do the same but with c++? For example: I have an interface Shape which can be implemented as Triangle or Square.
I tried to do the following but my program didn't compile:
Shape * myShape = new Square();
myShape->uniquetoSquare();
"typeinfo for Shape", referenced from:
      typeinfo for Triangle in Triangle.o
class Shape {
  public:
    Shape(){};
    int height;
    int width;
    string color;
    void sayHello(){ 
       cout << "Hello!";
    }
    int getArea(){
      return 0;
    }
}
class Triangle: public Shape {
  public:
    bool obtuse;
    
    Triangle(){
      obtuse = false;
    };
    void sayHello(){ 
       cout << "Hello I'm a triangle!";
    }
    int getArea(){
      return height*width / 2;
    }
}
class Square: public Shape {
  public:
    bool rectangular
    Square(){
      rectangle = true;
    };
    void sayHello(){ 
       cout << "Hello I'm a square!";
    }
    int getArea(){
      return height*width;
    }
    void uniqueToSquare(){
      cout << "This func is only in square!";
    }
}
 
     
     
     
    