gpt4 book ai didi

c++ - 为什么 NetBeans 显示不正确的自动完成?

转载 作者:行者123 更新时间:2023-11-30 01:31:20 24 4
gpt4 key购买 nike

我昨天在第一学期末参加了编程 I 考试。这是非常基本的,除了我犯了一个非常非常模糊的错误,我想问问这里更有经验的人:

我基本上有一个类库,其中包含一个 vector ,该 vector 包含 Loan* 的元素,其中包含 Customer 和 Book 类。有点像这样:

class Library
{
vector<Loan*> loans_;
};

class Loan
{
Customer *customer_;
Book *book_;
};

我有一个函数需要遍历所有初始化的书籍对象并查看哪些属于谁,如下所示:

Customer *getBorrower(Book *book)
{
vector<Loan*>::iterator iter;

for( iter = loans_.begin(); iter != loans_.end(); ++iter )
{
if( (*iter).getBook() == book )
return (*iter).getCustomer();
else
continue;
}
return 0;
}

这难倒了我,因为在 Netbeans 6.9 IDE 中 (*iter)。向我展示了 Loan 对象的所有方法的列表。

我刚准备退出,加载VC++08就问我要不要用->反而。

(*iter)->getBook();让我很懊恼。

所以我的问题是:为什么 IDE 允许我使用 .甚至吐出一个方法列表以及 -> ?据我所知,它不会在其他任何时候做这种疯狂的事情。这里到底发生了什么?我不明白我试图使该方法执行的操作给了我奇怪的 netbeans 错误“不是贷款类型 *”

第二题:这是一道风格题。我就此向教授提出意见,但他似乎不太同意。考试指南还让我们创建一个公共(public)

vector<Book*>vector<Customer*> .

然后我们从主函数访问这些以运行我们的单元测试。我发现这是非常糟糕的做法,因为一个简单的 getter 函数就可以在不公开我们的信息的情况下为我们提供我们需要的东西。我将其称为糟糕的设计选择是否正确?

错误:

Library.cpp:14: 错误:请求成员 getCustomer' in (&iter)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* with _Iterator = Loan**, _Container = std::vector >',它是非类类型'Loan*'

最佳答案

表达式(*iter)->getBook() 应该 工作。类型vector<T>::iterator是“指向”T 实例的东西, 通常是一个普通的 T* .在你的情况下,TLoan* , 所以 T*Loan** .因此 iterLoan** ,等等 (*iter)Loan* ,您可以使用 -> 访问它运营商。

NetBeans 很可能像您一样感到困惑,尽管它没有那么多借口。 :-)

关于c++ - 为什么 NetBeans 显示不正确的自动完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245469/

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