【问题标题】:std::vector pointer - expression must have class type errorstd::vector 指针 - 表达式必须有类类型错误
【发布时间】:2015-12-24 09:11:38
【问题描述】:

我正在尝试基于我正在调用的函数创建一个迭代器,以返回一个指向实例化对象中向量的指针,但我遇到了 expression must have class type 的错误。这个错误指的是什么?

std::vector<GUIItem*> *childitems = dynamic_cast<GUIWindow*>(it_guilist)->GetChildItems();
std::vector<GUIItem*>::iterator it_childitems = childitems.begin();

错误发生在 childitems.begin() 上。

我的GetChildItems函数如下:

std::vector<GUIItem*>* GUIItem::GetChildItems()
{
    std::vector<GUIItem*> * childitems = &m_childitems;
    return childitems;
}

我应该提到 GUIWindow 是从 GUIItem 基类派生的类。有什么想法吗?

【问题讨论】:

  • 请写MCVE。没有它,很难重现您的错误,而且您不太可能得到有用的答案。

标签: c++ pointers vector


【解决方案1】:

childitems 是一个指针,而不是一个对象。使用childitems-&gt;begin()

【讨论】:

  • 噢!应该看过那个。很简单。感谢您“指出”它(嘿,也许我应该改变职业轨道并写一本双关语)。
  • @Jamie4840 你绝对不应该,只是不再有市场了......不会有......'点'。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
相关资源
最近更新 更多