【发布时间】:2014-08-11 19:25:53
【问题描述】:
这有点难以解释,所以这里举个例子:
class A
{
...
}
class B: public A
{
...
}
vector<A *> v; // contains pointers to objects of both type A and type B
B item1;
item1 = *v[0]; // *v[0] in this case is an object of type B
除非我收到错误消息 no match for ‘operator=’ (operand types are ‘B’ and ‘A’) 和 no known conversion for argument 1 from ‘A’ to ‘const B&’,尽管我会在将 v[0] 分配给 item1 之前检查以确保它是 B 类型。
我意识到如果我试图将 A 的对象分配给其派生类的对象,这可能会产生问题,但这就是检查的目的。我该如何解决这个问题?我是否需要做一些完全不同的事情,或者重载运算符或类似的事情?任何帮助表示赞赏。
【问题讨论】:
-
标题听起来很奇怪!这样的操作应该达到什么效果?!?
标签: c++ class pointers base assign