Is it possible to have a different type definition based on which derived class is instantiated?
Say I have a parent class with a virtual function func(), two int members and a vector of type myType, and two child classes, which share the same int members, and the vector, but their implementation of func() require myType to be slightly different. 
For example:
class Parent {
  protected:
    int myMember;
    int myOtherMember;
    std::vector<myType> vec;
  public:
    Parent(variable);
    virtual int func() = 0;
}
class Child1 : public Parent {
  private:
    typedef <some type definiton> myType;
  public:
    Child1(variable) : Parent(variable){};
    int func() {return someFunc();};
}
class Child2 : public Parent {
  private:
    typedef <some other type definiton> myType;
  public:
    Child2(variable) : Parent(variable){};
    int func() {return someOtherFunc();};
}
Can I do something like this? when I have tried it, it creates a circular dependency in the header files, because class Parent is required to be included first, but then it requires myType to be defined.
Is there a way of forward declaring myType depending on class? or do I just need to include a different vector of myType in each class like so:
class Parent {
  protected:
    int myMember;
    int myOtherMember;
  public:
    Parent(variable);
    virtual int func() = 0;
}
class Child1 : public Parent {
  private:
    typedef <some type definiton> myType;
    std::vector<myType> vec;
  public:
    Child1(variable) : Parent(variable){};
    int func() {return someFunc();};
}
class Child2 : public Parent {
  private:
    typedef <some other type definiton> myType;
    std::vector<myType> vec;     
  public:
    Child2(variable) : Parent(variable){};
    int func() {return someOtherFunc();};
}
 
     
     
     
    