Pointers 向量迭代器

Pointers 向量迭代器,pointers,vector,iterator,Pointers,Vector,Iterator,我有 VC++2008生成错误C2679。怎么了?这是不合法的。您需要使用与向量类型相同的迭代器。如果向量确实包含指向CDerived对象的指针,则将其设为向量。如果没有,则需要尝试向下投射向量中的对象,当然,这可能不会成功。在这种情况下,您可能需要研究动态强制转换。并非所有CBase都是CDeriveds。假设还有其他从CBase派生的类。那么将CDerived2*解释为CDerived*意味着什么呢?将CBase*解释为CDerived*意味着什么?可以将这两种类型都放在CBase向量中。您

我有


VC++2008生成错误C2679。怎么了?

这是不合法的。您需要使用与向量类型相同的迭代器。如果向量确实包含指向CDerived对象的指针,则将其设为向量。如果没有,则需要尝试向下投射向量中的对象,当然,这可能不会成功。在这种情况下,您可能需要研究动态强制转换。

并非所有CBase都是CDeriveds。假设还有其他从CBase派生的类。那么将CDerived2*解释为CDerived*意味着什么呢?将CBase*解释为CDerived*意味着什么?可以将这两种类型都放在CBase向量中。

您可以始终使用简单的指针对象;CDerived*foo=CDerived**mpBase.begin;。但正如其他人所说,这可能并不总是可能的

class CBase
{
.......
};

class CDerived : public CBase
{
......
};

vector<CBase*> mpBase;
vector<CDerived*>::iterator InfoIt;

InfoIt=mpBase.begin();