问题标签 [forward-declaration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
23029 浏览

c++ - 头文件包含/前向声明

在我的 C++ 项目中,我什么时候必须使用#include "myclass.h"头文件的包含 ()?我什么时候必须使用类的前向声明(class CMyClass;)?

0 投票
7 回答
7242 浏览

c++ - C++前向声明问题

我有一个包含一些前向声明的头文件,但是当我在实现文件中包含头文件时,它会包含在先前前向声明的包含之后,这会导致这样的错误。

解决这个问题的规范是什么?

提前致谢。

0 投票
3 回答
203 浏览

c++ - C++:如何使用尚未定义的类型?

C++ 要求在使用之前定义所有类型,这使得以正确的顺序包含头文件非常重要。美好的。但是我的情况呢:

Bunny.h

编译器抱怨,因为在我在自己的类定义中使用它的时候,技术上还没有完全定义。Bunny因为我做了一些愚蠢的事情(无关)。

除了重写我的模板类Reference以使其采用指针类型(在这种情况下我可以使用 的前向声明Bunny)之外,我不知道如何解决这个问题。

有什么建议么?

编辑:我的Reference类(XObject是数据模式对象的基类):

编辑:这工作正常,问题是别的。非常感谢你的帮助!

0 投票
5 回答
1966 浏览

c++ - 对内置数据类型使用前向声明

我知道,只要有可能,我们将使用前向声明而不是包含来加快编译速度。

我有这样的课Person

Student和这样的课

在 Student.h 中,我有一个前向声明class Person;可以Person在我的转换构造函数中使用。美好的。但是我已经#include <string>避免std::string在代码中使用时出现编译错误。这里如何使用前向声明来避免编译错误?可能吗?

谢谢。

0 投票
1 回答
1636 浏览

types - OCaml 前向声明

有没有办法在 OCaml 中进行 C 风格的前向声明?

我的问题是我有两个相互引用的变体:

所以这两种类型都必须知道另一种。我在谷歌上搜索过,但不幸的是 OCaml 不是一种如此广泛使用的编程语言。

0 投票
5 回答
5744 浏览

c++ - C++ 命名空间别名和前向声明

我正在使用一个 C++ 第三方库,它将其所有类都放在版本化命名空间中,我们称之为tplib_v44. 他们还定义了一个通用的命名空间别名:

如果使用通用命名空间在我自己的 .h 文件中前向声明库的成员...

...我在第三方库的头文件中出现编译器错误(稍后将包含在我的 .cpp 实现文件中):

如果我使用特定于版本的命名空间,那么一切正常,但是……有什么意义呢?处理这个问题的最佳方法是什么?

[编辑]仅供未来观众参考,这是 ICU 图书馆。一个解决方案(至少在我的情况下)在对已接受答案的评论中。

0 投票
2 回答
5097 浏览

c++ - C++:前向声明时指针大小未知(错误 C2036)

在头文件中,我已经前向声明了命名空间的两个成员:

编译器产生的错误是:

我猜这是前向声明的问题Odp。我怎样才能解决这个问题?

0 投票
1 回答
386 浏览

c++ - 在 C++ 中解决涉及状态机的前向声明问题

我最近在中断后回到了 C++ 开发,并且对状态设计模式的实现有疑问。我正在使用香草模式,完全按照 GoF 书。

我的问题是状态机本身是基于一些用作嵌入式系统一部分的硬件 - 所以设计是固定的,不能改变。这导致两个状态之间的循环依赖(特别是),我正在尝试解决这个问题。这是简化的代码(请注意,我尝试像往常一样使用标头来解决此问题,但仍然存在问题 - 我在此代码片段中省略了它们):

问题基本上是在状态模式中,状态转换是通过调用 Context 类中的 ChangeState 方法进行的,该方法调用下一个状态的构造函数。

由于循环依赖,我无法调用构造函数,因为无法预先定义“问题”状态的两个构造函数。

我看了这篇文章,模板方法似乎是理想的解决方案 - 但它不能编译,而且我对模板的了解相当有限......

我的另一个想法是尝试通过多重继承将 Helper 类引入子类状态,以查看是否可以指定基类的构造函数并引用状态子类的构造函数。但我认为那是相当雄心勃勃的......

最后,工厂方法设计模式的直接实现是解决整个问题的最佳方式吗?

0 投票
1 回答
117 浏览

c++ - 什么时候必须声明模板中使用的函数?

我有(可能)一个简单的问题。什么时候必须声明模板中使用的函数?打印出以下代码(使用 gcc >=4.1):

初始化我的 A 对象

没有初始化

使用 gcc 4.0 打印出以下代码:

初始化我的 A 对象

初始化我的字符串对象

std::string 和 A 的用法有什么区别?不应该有相同的行为吗?

使用附加的前向声明它可以正常工作,但是我什么时候需要它?

干杯,CSpille

0 投票
3 回答
6478 浏览

c++ - 使用友元函数的前向声明:不完整类型的无效使用

尝试编译此代码时,发生了一些错误。例如

不完整类型的无效使用

这段代码有什么问题?