Это потому, что, хотя Base
и Derived
имеют отношение, между vector
и vector
нет отношения. Что касается иерархии классов, то они полностью не связаны друг с другом, поэтому вы не можете назначить их другим.
Концепция, которую вы ищете, называется ковариацией . Например, в Java String[]
является подтипом Object[]
. Но в C ++ эти два типа являются только разными типами и не более связаны с String[]
и Bar
.
push_back
работает, потому что этот метод просто принимает значение T const&
(или T&&
), поэтому все, что может быть конвертировано в Base*
, будет приемлемым - это Derived*
.
Тем не менее, vector
имеет конструктор, который принимает пару итераторов, которые должны быть проще использовать здесь:
vector v2(v1.begin(), v1.end());
Или, поскольку он уже построен:
v2.assign(v1.begin(), v1.end());
Я провел много времени движущаяся зависимость с testImplementation
вместо androidTestImplementation
и реверс, в приложении build.gradle
.
Мой отказ был то, что я создал тестовый класс в test
папка вместо androidTest
папка настолько добирающаяся неразрешенная ошибка для AndroidJuit4
и InstrumentationRegistry
.
, Когда я сместил свой тестовый файл к androidTest
, папка тогда выходит решенный с реализацией зависимости тестовых библиотек с androidTestImplementation
в build.gradle
.