【发布时间】:2015-04-07 14:52:40
【问题描述】:
这似乎是一个非常基本的问题,但我无法弄清楚。我有一个指向派生对象的原始指针std::vector,我只想使用赋值运算符将它复制到另一个基指针向量。使用 VC++ 我得到错误 C2679 "binary '=': no operator found..." 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 有效?对我来说似乎是同样的事情。
【问题讨论】:
标签: c++ pointers inheritance vector