无法打开包含文件:'vector.h':没有那个文件或目录。

10
在文件顶部,我有以下代码:
#include "vector.h"

然后我执行以下操作:
vector<vtarg> targVector;

并收到以下错误信息

Cannot open include file: 'vector.h': No such file or directory

我有遗漏吗?我尝试了#include "vector",但是出现了更多错误。

#include "afxwin.h"
#include "vector.h"
// CTargDlg dialog
class CTargDlg : public CDialog {
  // Construction 
public:
    CTargDlg(CWnd* pParent = NULL);
  // standard constructor
    vector<vtarg> targVector;

现代C++使用#include <vector>。如果你正在使用过时的C++或者使用了一个不标准的头文件,该文件在你的机器上是不可用的(在你请求搜索的头文件目录或系统目录中)。由于你正在使用模板符号,所以你不能完全使用过时的C++,因此你应该编写#include <vector>并关注std命名空间。 - Jonathan Leffler
#include "afxwin.h" #include "vector.h"// CTargDlg 对话框类 class CTargDlg : public CDialog { // 构造函数 public: CTargDlg(CWnd* pParent = NULL); // 标准构造函数vector targVector; // 目标向量}; - craftace
@Sayem:你应该看原始帖子,没有代码示例和良好的帖子结构。人们之所以能够轻松回答这个问题,只是因为它是一个非常基本的错误。如果是关于一个非常困难的主题的类似问题,人们将在几分钟内进行投票并关闭它,而这个问题却得到了3个赞。谈论公正。 - KillianDS
如果这是你的完整代码,那么它无法编译也就不足为奇了。至少,你缺少一个 }; - jalf
1
@KillianDS:不用生气 :-) 。我只是在说,当人们对一个问题/答案进行负评时,应该留下评论解释原因。然后,也许那些发布不完整问题/答案的人就会理解了。我认为这样可以更优雅地处理这些事情 :-)。 - MD Sayem Ahmed
6个回答

15

你需要使用

#include <vector>

相应地,不要使用 .h 文件扩展名。此外,vector 模板存在于 std 命名空间中,因此你应该像这样定义你的 vector

std::vector<vtarg> targVector;

还要确保包含vtarg所需的任何标头。


5

您有三个错误。

首先,include文件的名称应该是vector,而不是vector.h。

其次,这个vector是标准C++运行时库的一部分,您需要使用<>的include语法,像这样:

#include <vector>

第三,向量类(实际上是模板类)属于std命名空间。因此,您应该编写:

std::vector<vtarg> targVector;

4
头文件名叫做vector,而不是vector.h
一般来说,标准的C++头文件没有.h后缀。
如果你在#include <vector>时遇到了“更多的错误”,那么你需要解决这些错误。但是由于你没有说明这些错误是什么,所以很难帮助你解决。

1

没有 "vector.h"。std::vector 的头文件是 <vector>。实际上,所有的 C++ 标准库头文件(除了与 C 兼容的头文件)都不以 ".h" 结尾。


1
如果我使用 #include <vector>,那么在创建向量时会出现不同的错误,包括 error C2143: 语法错误:在 '<' 前缺少 ';'、error C4430: 缺少类型说明符 - 假定为 int。注意:C++ 不支持默认 int 和 error C2238: ';' 之前有意外的标记。 - craftace
1
@craftace:那么?你希望我们对此做些什么?“不同的错误”很难进行故障排除。但我可以告诉你这一点:“你需要修复这些错误”。 - jalf

1
尝试使用这个替代方案。
include "vector" 

一些编译器,例如Visual C++ 2010,支持这种类型的符号表示法。
另外,如果是一个.c文件,例如xy.c,请使用include"xy"。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接