Вы не можете создать экземпляр класса, если у него есть чисто виртуальные члены.Были ли эти чисто виртуальные члены объявлены в этом классе или в базовом классе .Класс не может быть создан, если не существуют все его члены.Класс, имеющий чисто виртуальные члены (объявленные в классе или в базовом классе), называется абстрактным классом.
Так что, если вы наследуете от базового класса, который имеет чисто виртуальные члены, вы должны реализовать их в производном классе, если вы хотите создать экземпляры этого класса (например, поместить их в std::vector
).
Вы можете поместить указатели на абстрактный класс в std::vector
,Но только указатели, а не сам объект.Таким образом, вам нужно было бы выделить ваши объекты с помощью new
, но, поскольку класс является абстрактным, вы не можете создавать их вообще.Поэтому вам нужно получить новый класс, который реализует чисто виртуальные методы.И тогда вы сможете создать этот класс и поместить его в свой std::vector<someclass*>
.