forward-declaration相关内容

使用unique_ptr转发声明?

我发现使用类的正向声明与 std :: unique_ptr 结合是有用的,如下面的代码。它编译和工作与GCC,但整个事情看起来很奇怪,我不知道这是否是标准的行为(即标准要求)?因为当我声明 unique_ptr 时,B不是完整的类型。 A.hpp #include B类; class A { std :: unique_ptr myptr ..
发布时间:2016-10-13 10:29:22 C/C++开发

什么是c ++中的forward declaration?

此回答说: / p> ...最后, typedef struct {...} Foo; 声明一个匿名结构并为其创建一个typedef。因此,使用此构造,它在标签命名空间中没有名称,只有typedef命名空间中的名称。这意味着它也不能被前向声明。 什么是转发声明? / p> 解决方案 Chad给出了一个非常好的字典定义。转发声明通常在C + ..
发布时间:2016-10-11 22:17:16 C/C++开发

如何转发声明一个内部类?

可能重复: C ++中嵌套类型/类的向前声明 我有一个类像这样... class Container { public: 类迭代器{ ... }; ... }; 在其他地方,我想通过引用传递一个Container :: Iterator,但我不想包括头文件。如果我试图转发声明类,我得到编译错误。 class Container :: ..
发布时间:2016-10-11 21:30:16 C/C++开发

我什么时候可以使用转发声明?

我正在寻找当我允许在另一个类的头文件中声明一个类的定义: 我允许为一个类? 解决方案 放置自己在编译器的位置:当你转发声明一个类型,所有编译器知道的是这种类型存在;它不知道它的大小,成员或方法。这就是为什么它被称为不完整类型。因此,您不能使用类型来声明成员或基类,因为编译器将需要知道类型的布局。 假设以下前向声明。 class X; 以下是您可以做什么 ..
发布时间:2016-10-11 19:44:22 C/C++开发

为什么函数声明需要在这?

code: 的#include<&stdio.h中GT; 诠释纳文(); //函数声明 诠释的main() { INT I =纳文(); //函数调用 } INT纳文()//函数定义 { 的printf(“你好”); } 输出: 您好 问: 如果我们去掉函数声明行 INT纳文();从上面的code ,它打印相同。那么,为什么使用它? 解决方案 这里的函数声明 ..
发布时间:2016-08-24 15:36:47 C/C++

隐函数声明有时在C工作?

有人能向我解释为什么编译如下: INT的main() { int类型的=的MyMethod(0); } INT的MyMethod(INT B) { 返回b; } 但这并不: INT的main() { 的MyMethod(0); } 无效的MyMethod(INT B) { 返回; } 我以为前置声明被要求在C / C ++,但这里是一个反例。如何隐式声明 ..
发布时间:2016-08-23 12:20:47 C/C++

在C标准库正申报实体?

是合法的声明转发由C标准库提供的结构和功能? 我的背景是C ++中,答案是否定的。造成这种情况的主要原因是由C ++标准库授权一个结构或类可能是幕后的模板,并可能有“秘密”模板参数,因此不能用天真的非模板声明适当声明。即使用户没有弄清楚到底如何转发在特定实现的特定版本声明特定实体,实现无义务的不破的该声明在未来的版本。 我没有任何C标准的副本在手,但显然没有模板用C 因此​​,它是合法的转发 ..
发布时间:2016-08-23 10:47:55 C/C++

在头结构的C正向声明

我想通过结构指针功能。我在file1.h有一个的typedef ,并希望只包括头file2.c中,因为只有file2.h需要指针。在C ++中我只写像我一样在这里,但使用C99这是行不通的。如果有人有任何建议如何通过结构指针没有完整的定义将是非常美联社preciated。编译器 - GCC。 file1.h typedef结构 { ... } NEW_STRUCT; file2 ..
发布时间:2016-08-22 14:52:43 C/C++

内联函数向前声明

我有一个要包含的内联函数大量(30+)的头文件。 而不是让读者滚动或搜索内联函数的定义(实现),我想有一个的向前声明的部分,指出函数的声明与描述功能的注释。本节将让读者了解如何使用功能或寻找一个功能,而无需向下滚动到落实。 另外,我希望读者在使用函数的习惯来获得,而不必查看它们的实现。 什么为独立函数的前向声明的语法 的 {这适用于C99和C ++} 的 仅供参考,我使用IAR工作台C编 ..
发布时间:2016-08-21 22:11:48 C/C++开发

如何做一个C / C ++编译器发现在头文件中的原型的定义是什么?

当我宣布在头文件中的函数,并把该函数的定义,在其他一些文件,请问编译器/链接找到的定义是什么?它系统地搜索在它的每个文件,还是有一个更好的解决方案?这已被窃听我过去几天,我一直无法找到一个解释吧。 解决方案 编译器不这样做,连接器一样。 虽然编译器上的一个源文件工作的时间,当调用链接它通过了所有由编译器生成的目标文件的名称,以及用户希望在有链接的任何库。因此,连接体具有一组可能潜在包含​ ..
发布时间:2016-08-19 15:56:11 C/C++开发

的typedef stuct在C向前声明

我有这样的: typedef结构数据数据,* DATA_PTR; typedef结构单元为单位,* UNITS_PTR;数据结构 { 双miscData; 单位单位; };结构单元 { 双X [2]; 双Y [2]; 双[2]张; }; 在我的 project_typedef.h 文件。 在另一个文件中,我有这样的:无效的FileInput(DATA ..
发布时间:2016-08-18 23:32:09 C/C++

无名结构的前置声明

赏金问题:所以,这两个富是不一样的东西。精细。第二种形式是在一个库提供。 如何前瞻性声明是因为我不能改变呢?的 我一直以为C和C ++允许重复提供报关单,有没有重复的定义。然后我试图写C ++ code延伸的C语言库时碰到这个问题来了。 结构美孚; typedef结构{}富; 这提供了以下错误: “结构富'的previous宣布为'结构美孚” 我要转发,申报的,该死!什么是错在这 ..
发布时间:2016-08-18 13:50:53 C/C++开发

我是正确的假设一个人不能向前声明库的不透明的指针类型?

有很多问题在那里大约向前声明和不透明的类型,但大多数似乎是从库作者的角度,还是人们试图使用不完全类型没有指针或一些这样的。 我使用的接口接受/返回 FOO * 指针库。我想证实,我不能(或不应该)在某种程度上前瞻性声明中的 FOO 或 FOO * 我的头文件(其中定义了 FOO * 成员的结构)。 我知道我可以只的#include< library.h> 在我的头和我的.c文件两者 ..
发布时间:2016-08-18 13:41:47 C/C++

远期声明FILE *

我如何向前声明 FILE * 用C?我通常做到这一点使用结构的MyType; ,但当然,这似乎并不可能。。 如果行为C类标准或编译器之间以及与C ++不同,这也是感兴趣的。 Update0 我为什么要一边做什么我问的是如何转发申报非结构/“typedef定义结构”式的,这样我可以声明指向它。显然,使用无效* 和源文件中的铸造这是一个有点hackish。 解决方案 您不能。该标准只规定 ..
发布时间:2016-08-18 13:05:30 C/C++开发