gpt4 book ai didi

c++ - “列表”未在此范围内声明

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

我是 C++ 的新手,我正在尝试获得一个基本程序来初始化短无符号整数列表。我正在使用 scygwin 和 g++ 编译和运行。

下面是 .cpp 文件中的代码:

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <typeinfo>
using namespace std;


int main (int argc, char* argv[]) {

list<int> events;

return 0;
}

我通过在 cygwin 终端中输入以下命令来运行它:

$ g++ -o test.out test.cpp

但是,我得到以下编译错误:

test.cpp: In function ‘int main(int, char**)’: test.cpp:16:1: error: ‘list’ was not declared in this scope list events;
^ test.cpp:16:6: error: expected primary-expression before ‘int’ list events; ^

我很困惑为什么列表不在范围内,因为我使用的是命名空间标准?我在 c++ 论坛上发现了一个类似的问题,但我的问题会得到解决。有人知道这里的问题是什么吗?

-保罗

最佳答案

using namespace std;不会向您的代码添加任何功能。这只是意味着您不必输入 std::当引用 std 中的内容时命名空间,例如 std::list .

实际包含 std::list 的代码库在你的程序中,你需要添加:

#include <list>

当对这类事情有疑问时,谷歌搜索 cpp reference list会出现类似 this 的页面在哪里可以看到:Defined in header <list>在顶部。

这是 another question关于using namespace std;这可能证明是有用的并且why you shouldn't use it .我将添加一些内容来解释命名空间。

在 C++ 程序中,将函数组织到类和命名空间中是很常见的。想象一下你写了自己的 list类来处理某些场景。为了防止命名冲突,您可以将它放在与 std 不同的命名空间中。 .

namespace MyApp {
class list;
void sort(list&);
}

对于大多数大型代码库,您可能仍然更喜欢使用 std::list但你需要MyApp::list对于一些事情。使用命名空间,您可以对代码进行集群并防止类似功能的命名冲突。

总结

using namespace std;这样一来,如果您引用不在全局命名空间中的函数或类,它会在 std 中查找它。命名空间。

#include <list>实际上在预处理器阶段将原型(prototype)(有关如何访问代码的信息)插入到源文件中。

关于c++ - “列表”未在此范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022306/

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