Похоже, вы пытаетесь реализовать что-то вроде полиморфизма, когда C ++ сделает это за вас.Если вы определяете виртуальные методы в базовом классе и переопределяете их в своих подклассах, вызовы этих методов по указателю или ссылка на базовый тип должны привести к вызову реализации подкласса.
Например:
class BaseClass
{
virtual void DoSomething()
{
printf("base");
}
};
class SubClass : public BaseClass
{
void DoSomething()
{
printf("sub");
}
};
int main()
{
BaseClass *myBase = new SubClass();
myBase->DoSomething(); // should print "sub" to stdout
return 0;
}
Вы должны знать, какой производный тип (тип подкласса) вы хотите использовать при его создании, чтобы экземпляр имел дополнительные функциональные возможности производного типа.Если вы этого не сделаете, все, что вы получите, - это функциональность базового класса, и вы не можете рассматривать его как что-либо, кроме базового класса (или чего-либо еще выше иерархии наследования, если ваш базовый класс наследует от чего-то).* Возможно, вы даже захотите использовать элемент для различения разных экземпляров, если они на самом деле не делают ничего другого.Из примера кода сложно сказать, что именно вы хотите сделать.Может быть, поможет более конкретный пример того, чего вы пытаетесь достичь, а не того, как вы пытаетесь достичь этого.