forward-declaration相关内容

什么是 C++ 中的前向声明?

在:http://www.learncpp.com/cpp-tutorial/19-头文件/ 以下提到: 添加.cpp: int add(int x, int y){返回 x + y;} main.cpp: #include int add(int x, int y);//使用函数原型的前向声明主函数(){使用命名空间标准;cout 您能进一步解释“前向声明 ..
发布时间:2022-01-30 15:54:01 C/C++开发

Django模型:两个类之间的相互引用以及在python中无法使用前向声明

我定义了两个模型,每个模型相互引用,如下所示: 类用户(models.Model):# ...喜欢 = models.ManyToManyField(Article, related_name='loved_by')类文章(models.Model):# ...作者 = 模型.外键(用户) 你看,问题是两个类相互引用.无论这两个类以什么顺序实现,python总是引发NameError异常,抱怨 ..
发布时间:2022-01-20 12:30:44 Python

有没有更短的方法来转发在命名空间中声明一个类?

我可以通过这样做在命名空间中转发声明一个函数: void myNamespace::doThing(); 相当于: 命名空间 myNamespace{无效做事();} 在命名空间中转发声明一个类: 命名空间 myNamespace{类我的类;} 有没有更短的方法来做到这一点?我的想法是这样的: class myNamespace::myClass; 解决方案 不,但是需要重新格式 ..
发布时间:2022-01-14 23:41:27 C/C++开发

为什么 C++ 友元类只需要在其他命名空间中进行前向声明?

假设我有一个类 F 应该是类 G(在全局命名空间中)和 C(在命名空间 A). 要成为 A::C 的朋友,F 必须前向声明. 要成为G的朋友,F的前向声明是不必要的. 同样,类 A::BF 可以成为 A::C 的朋友,无需前向声明 以下代码说明了这一点,并可以使用 GCC 4.5、VC++ 10 以及至少一个其他编译器进行编译. 类 G {F类朋友;整数克;};//如果没有这个前 ..
发布时间:2022-01-14 23:02:49 C/C++开发

在不使用未命名命名空间的情况下将 C++ 类隐藏在标头中

我正在编写一个 C++ 头文件,我在其中定义了一个 A 类 {//...}; 我想对外界隐藏(因为它可能会在此标头的未来版本中更改甚至被删除). 在同一个头文件中还有一个 B 类,它有一个 A 类的对象作为成员: B 类 {上市://...私人的:一个a_;}; 什么是对外界隐藏A级的正确方法? 如果我将 A 的定义放在未命名的命名空间中,编译器会发出警告,因此我假设由于内部链 ..
发布时间:2022-01-11 16:37:04 C/C++开发

C/C++ 编译器如何在头文件中找到原型的定义?

当我在头文件中声明一个函数,并将该函数的定义放在其他文件中时,编译器/链接器如何找到定义?它会系统地搜索其路径中的每个文件,还是有更优雅的解决方案?这几天一直困扰着我,一直找不到解释. 解决方案 编译器不做这个,链接器做. 当编译器一次处理一个源文件时,当调用链接器时,它会传递编译器生成的所有目标文件的名称,以及用户希望链接的任何库的名称.因此,链接器完全了解可能包含该定义的文件集, ..
发布时间:2022-01-11 16:16:14 C/C++开发

模板:使用前向声明来减少编译时间?

我必须处理一个由许多模板化类组成的库,这些类当然都是在头文件中实现的.现在我正试图找到一种方法来减少无法忍受的长编译时间,因为我几乎必须在我的每个编译单元中都包含整个库. 尽管有模板,是否可以使用前向声明?我正在尝试按照以下示例的方式进行操作,我试图绕过 #include ,作为示例,但它给了我一个链接器错误,因为 push_back 未定义. #include 命名空间标 ..
发布时间:2022-01-04 21:35:56 C/C++开发

Django 模型:两个类之间的相互引用以及无法在 python 中使用前向声明

我定义了两个模型,每个模型都引用另一个模型,如下所示: class User(models.Model):# ...love = models.ManyToManyField(文章,related_name='loved_by')类文章(模型.模型):# ...author = models.ForeignKey(用户) 你看,问题是两个类相互引用.无论这两个类以什么顺序实现,python 总 ..
发布时间:2022-01-02 09:01:20 Python

在Lua中向前定义一个函数?

如何调用需要从其创建之上调用的函数?我读了一些关于前向声明的内容,但谷歌在这种情况下没有帮助.什么是正确的语法? 解决方案 Lua 是一种动态语言,函数只是一种可以用 () 运算符调用的值.所以你真的不需要提前声明函数,只要确保调用它时作用域中的变量就是你认为的变量即可. 对于包含函数的全局变量来说,这根本不是问题,因为全局环境是查找解析变量名称的默认位置.然而,对于局部函数,你需要 ..
发布时间:2021-12-30 20:10:31 其他开发

为什么在前向声明时必须提供枚举的大小?

我只是不明白为什么枚举的大小与编译器相关,而类的大小则不然. 我的代码示例: A类;枚举 E;//必须是枚举 E : int;为了编译void f(const A & param);void f(const E & param); 我在这里谈论的是标准 C++ 编译器.我知道 MSVC 让它编译并正常工作.所以问题是: 为什么没有标准化? 解决方案 这个已经标准化了,提案 ..
发布时间:2021-12-29 16:32:50 C/C++开发

未命名结构的前向声明

悬赏问题: 所以,这两个 Foo 不是一回事.美好的.第二种形式是在图书馆中给出的.鉴于我无法更改它,我该如何提前声明它? 我一直认为 C 和 C++ 允许重复声明,前提是没有重复定义.然后我在尝试编写扩展 C 库的 C++ 代码时遇到了这个问题. struct Foo;typedef struct {} Foo; 出现以下错误: 'struct Foo' 先前声明为 'struc ..
发布时间:2021-12-23 17:27:45 C/C++开发

前向声明为结构 vs 类

我在一个类的 C++ 前向声明中发现了一个错误,它被错误地声明为 struct Book 而不是 class Book.我认为 Book 曾经是一个结构体,后来变成了一个类,但前向声明仍然存在. Book.h: class Book {...}; 库.h: struct Book;类库{std::vector图书;}; 没有编译器警告,生成的程序似乎运行良好.这让我很好奇:理论上,这 ..
发布时间:2021-12-23 17:18:50 C/C++开发

C中结构的前向声明?

#include 结构上下文;结构函数{无效(*func0)(上下文*ctx);无效(*func1)(无效);};结构上下文{funcptrs fps;};void func1 (void) { printf("1\n");}void func0 (context *ctx) { printf("0\n");}void getContext(context *con){骗局=?;//请用一个虚拟示 ..
发布时间:2021-12-23 17:06:57 其他开发

为什么我不能在 try 块中定义之前使用 Javascript 函数?

正如在此处所讨论的, 函数定义可以在定义之前使用.但是一旦一段代码被包含在一个 try 块中,情况就不再是这样了. 这会显示“Hello world": hello();功能你好(){警报(“你好世界");} 但这会显示“ReferenceError: hello is not defined": 尝试{你好();功能你好(){警报(“你好世界");}} 抓住(错误){警报(错误);} ..

在 C++ 中,是否可以将类声明为从另一个类继承?

我知道我可以做到: class Foo; 但是我可以转发声明一个类从另一个类继承,例如: class Bar {};Foo 类:公共酒吧; 一个示例用例是协变引用返回类型. //某处.h类 RA {}RB 类:公共 RA {} ... 然后在另一个不包含 something.h 的标题中 //other.hRA 类;A类{上市:虚拟 RA* Foo();//这只需要向前减速}RB 类 ..
发布时间:2021-12-17 19:14:59 C/C++开发

如何在 Delphi 2010 下设置具有泛型类型的前向声明?

我遇到了一个似乎非常经典的问题:一个项目和一个集合类,两者都相互引用,需要一个前向声明.我使用的是带有更新 5 的 Delphi 2010. 这适用于非泛型类,但我无法解决泛型类型的 E2086 错误: 类型//前向声明TMyElement = 类;//E2086: 类型 'TMyElement' 尚未完全定义TMyCollection= 班级//结尾;TMyElement = 类FPar ..
发布时间:2021-12-13 23:13:41 其他开发

C++ 类前向声明

当我尝试编译这段代码时,我得到: 52 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h 未定义类型`struct tile_tree_apple'的无效使用46 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h `struct tile_tree_apple' 的前向声明 我的部分代码: class tile_tree_apple;t ..
发布时间:2021-12-09 21:30:17 C/C++开发

C++ 中嵌套类型/类的前向声明

我最近陷入了这样的境地: A 类{民众:typedef 结构/类 {…} B;…C::D *someField;}C级{民众:typedef 结构/类 {…} D;…A::B *someField;} 通常你可以声明一个类名: A类; 但是不能前向声明嵌套类型,以下会导致编译错误. class C::D; 有什么想法吗? 解决方案 你做不到,这是 C++ 语言的一个漏洞.您必须 ..
发布时间:2021-12-09 20:47:48 C/C++开发