gpt4 book ai didi

c++ - 在 vector 循环 C++ 中使用对象方法

转载 作者:行者123 更新时间:2023-11-27 23:11:36 25 4
gpt4 key购买 nike

这是我的课:

class A
{
public:
int getVal(){return m_val;};
private:
int m_val = 1;
}

class B
{
public:
void print();
private:
std::vector<A*> m_vA;
}

现在已经出版了

void B::print()
{
std::vector<A>::iterator it;
for(auto it = m_vA.begin(); it != m_vA.end(); it++) {
cout << *it.getVal() << endl;
}
}

我得到了这个错误:

error: no member named 'getVal' in 'std::__1::__wrap_iter<A *const *>'

我不明白为什么

谢谢你的帮助

最佳答案

存在各种问题。首先,您有一个运算符优先级问题。有问题的表达式是这样读的:

*(it.getVal())

你可以使用任何一个

it->getVal()

(*it).getVal()

接下来,您的 vector 类型为 std::vector<A*> , 但你的迭代器是 std::vector<A>::iterator .那行不通。我的答案取决于 vector 是 std::vector<A> .如果是 std::vector<A*>那么你需要一个额外的取消引用级别:

(*it)->getVal()

关于c++ - 在 vector 循环 C++ 中使用对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com