【发布时间】:2012-01-11 15:50:35
【问题描述】:
我有一堂课:
class Foo
{
std::string name_;
Foo(std::string name)
{
name_ = name;
}
std::string getName()
{
return name_;
}
}
然后我有这些类的填充向量:
std::vector<Foo *> bar_;
/* ... populate bar_ ... */
std::vector<Foo *>::iterator iter = bar_.begin();
while(iter != bar_.end())
{
std::cout << "Name: " << (*iter)->getName() << std::endl;
}
我的 (*iter)->getName() 不工作,我得到这个错误:
error: invalid cast from type ‘__gnu_cxx::__normal_iterator
【问题讨论】:
-
你能发布完整的错误信息吗?顺便说一句,如果这不是您实际拥有的,请不要说您拥有“这些类的向量”。您的代码看起来正确;错误可能在其他地方。
-
请注意,这是一个无限循环,因为
iter永远不会增加。不确定这是否是实际代码,因为Foo类定义中缺少分号。 -
对于一个表现不佳的问题,我暂时给它一个-1。如果你清理它并发布真实代码,我会重新考虑。
-
@Grammin:您没有发布您正在编译的实际代码。您发布的代码中有几个错误,但不是您提到的那个。请发布实际代码。
-
如果您确实要编译代码,请注意您的循环将是无限的,因为您永远不会递增 iter...