cost 336 ms
朋友声明了一个非模板 function,即使它驻留在模板化的 class 中(仅 gcc) - Friend declares a non-template function even though it resides in templated class (only gcc)

下面的示例编译但 gcc 警告我朋友声明实际上不是模板化的 function。我不明白我到底应该改变什么。 Clang 和 MSVC 毫无问题地接受此代码。 在这个问题中,暗示你应该将template <typename T>放在类内朋友声明的前面,但随后 gcc 抱怨隐藏 T。 ...

两个文件相互包含导致无法通过前向声明修复的错误 - Two files including each other causes errors that cannot be fixed by forward declaring

所以,读清楚... 所以,那是Scene class,然后我们得到了Entity class 我尝试向前声明这些类,但由于它们访问彼此的函数和 class 变量等,这有点不可能。 我试图创建一个包含实体的场景。 由于 c++ 在两个文件相互包含时出现这个奇怪的问题,我真的不知道该怎么做,因为我的类必 ...

C++中,虚拟function返回类型的header文件是否必须包含在class声明中? - In C++, do the header files of virtual function return types have to be included in the class declaration?

考虑以下代码: 是否必须包含 Type_A 和 Type_B 的 header 文件,或者转发声明这些类型是否安全? 请注意,copied_ta() 和 copied_tb() 函数返回的是对象,而不是指向对象的指针。 谢谢。 ...

为什么我可以引用仅前向声明的枚举成员 - Why can I reference a member of an enum that is only forward declared

例如,给定以下内容: 在我看来,这不应该编译,因为在 function.h 中,只向前声明了TestEnum ,编译器无法知道TestEnum::THREE (用作TestFunction的默认参数)是枚举的有效成员。 然而它确实如此。 如果我转发声明 class,我将无法访问其成员,但使用枚举似乎 ...

C++ 又一个 unique_ptr 类型不完整的问题 - C++ another unique_ptr incomplete type question

在这里查看了各种类似的问题,但仍然无法弄清楚为什么以下代码无法编译: 据此: 如果使用默认删除器,T 必须在代码中调用删除器的位置完成,这发生在 std::unique_ptr 的析构函数、移动赋值运算符和重置成员函数中。 据我了解,这些(析构函数、移动赋值运算符或重置成员函数)都没有发生在main ...

C++:匿名结构的结构前向声明导致“声明冲突” - C++: struct forward declaration of anonymous struct causes "conflicting declaration"

我有这个 hpp 文件: 以及对应的cpp文件: 现在,像这样编译:g++ A.cpp 我得到这个错误: 显然使命名它的结构有效,不幸的是我无法控制库中 struct rte_spinlock_t 的 typedef。 我该如何解决这个问题? 我希望能够转发一个未命名的结构而不会陷入声明冲突。 ...

在声明和类名定义中使用不同的类键是否合法? - Is it legal to use a different class-key in a declaration and the definition of a class-name?

标准(自 C++20 起)是否明确或隐含地允许在(向前)声明类名时使用与定义类名时不同的类键? 出于此问题的目的, class-key应限于class或struct ,不包括union 。 换句话说,这是合法的: 答案应明确引用 C++20 标准(或合适的草案)。 我在整个[class]部分找不到 ...

为什么我们可以使用前向声明的 function 但不能实例化前向声明的 class? - Why can we use a forward declared function but not instantiate a forward declared class?

在阅读这篇文章时,我想知道为什么可以像在这个例子中那样调用之前前向声明的 function 但是实例化或调用之前前向声明的 class 的成员变量是不可能的,就像在示例中一样 我的想法是 function 就像一个地址,它是在前向声明完成时定义的(例如 f() 被分配0xABC )。 然后在解析r ...

前向声明如何节省编译时间? - How does forward declaration save compile time?

如果您在线阅读,那么在 C++ 中有很多声明,如果您使用前向声明,那么它可以节省您的编译时间。 通常的理论是,如果我使用前向声明, #include意味着仅仅是文本替换,那么我的编译器不需要解析 header 并可能编译它,所以它节省了时间。 我发现这种说法很难相信,因为考虑到我通常会看到这样的代 ...

前向声明会禁用任何运行时优化吗? - Do forward declarations disable any runtime optimizations?

我们可以转发声明一个 function: 如果func1调用func2 ,这可能是必要的: 虽然在第二个示例中内联func1并不难,但我不知道在任意复杂的程序中是否存在此类编译器优化的理论障碍。 在第二种情况下,前向声明是必要的,并且可能会丢失与程序的递归性质相关的编译器优化。 问题:当不需要但仍 ...

在 class 上下文中使用时,前向声明与就地前向声明的工作方式不同 - Forward declarations don't work the same as in-place forward declarations when used in class context

我正在探索 C++ 实例化/声明顺序的奥秘。 这是我遇到的一个有趣的点: 这编译: 但是当您选择就地声明时,它突然停止工作( Demo ): 这是我得到的错误: 有人可以确切地解释为什么会发生这种情况吗? 有什么区别? 编辑:在某些情况下,您可以在模板参数列表中声明一个类型: 我不知道这适用于何时何 ...

递归定义的前向声明使用指令 - Forward declare using directive for recursive definitions

我有一个包含变体类型项目的数组,我想使用通用 std::array 迭代器对其进行迭代。 现在我想用我自己的 class array2来管理阵列。 但是,该变体也可能包含一个类型为array2的 object,它是使用变体本身实例化的,这意味着 val 已经作为模板参数需要。 从逻辑的角度来看,这个 ...

前向声明一个函数/任务 - Forward declare a function/task

我浏览了互联网,我只看到人们使用typedef关键字对类进行前向声明。 但是,我想知道我是如何处理函数/任务的? 我想将主要功能放在其他功能/任务的定义之上,以方便读者预览它。 在 C++ 中,函数的前向声明如下所示: 对于 SystemVerilog,会是这样吗? 我应该将typedef ...

为什么此任务配置不允许我在 Windows 上的 VS Code 中编译多个 C++ 文件? - Why does this task config not allow me to compile multiple C++ files in VS Code on Windows?

因此,我查看了其他一些 Stack Overflow 问题,并在 VS Code 中对我的任务文件进行了一些尝试,以编译多个 C++ 文件。 但是,它似乎不起作用,并且有点困惑为什么它仍然没有链接。 我更喜欢使用 VS Code 而不是 IDE,所以我真的很想让它工作。 主文件 测试.cpp ...

相互依赖的 constexpr 构造函数 - Mutually dependent constexpr constructors

我有两个类,每个类都可以相互构造。 例子: 我需要转发声明class B ,所以 A 知道它。 当这些构造函数不是constexpr时,我可以将它们的定义移动到一个源文件中并顺利编译。 但是,要使其成为 constexpr,它们必须在 header 中定义B可以从A构造,因为它看到了A的完整定义。 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM