Это кажется довольно простой проблемой, но я не могу понять это. У меня есть std::vector
необработанных указателей на Производные объекты, и я просто хочу скопировать его в другой вектор базовых указателей с помощью оператора присваивания. С VС++ я получаю ошибку C2679 "binary '=': оператор не найден..." BTW Мне не нужна глубокая копия объектов, я просто хочу скопировать указатели. Пример кода:
#include <vector>
using namespace std;
struct Base{};
struct Derived: public Base {};
int main (int argc, char* argv[])
{
vector<Derived*> V1;
vector<Base*> V2;
V2 = V1; //Compiler error here
return 0;
}
Меня смущает то, что я могу скопировать вектор, перейдя через него и используя push_back
, например:
for (Derived* p_derived : V1)
V2.push_back(p_derived);
Итак, мой вопрос в том, почему назначение не работает, а push_back
работает? Для меня это похоже на то же.