问题标签 [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.
c++ - 多源目录前向声明;模板实例化
我正在寻找一本好书,参考材料,它处理类的前向声明,尤其是。当源位于多个目录中时,例如。dirA 中的 A 类在 dirB 中的 B 类中前向声明?这是怎么做的?
此外,对于模板问题、高级用途和实例化问题的任何材料,是否受到高度评价?
谢谢。
python - 前向声明 - django 中没有管理页面?
这可能是一个数据库设计问题,但我想不出更好的办法。在其他几个中,我有这些模型:
和
所以基本上,我有一个用户实体,它与乐队实体有多对多的关系。转折是我想要一个特殊的用户,他在网站上“创建”了乐队,以拥有特殊的编辑能力。于是我往前走,添加了一个名为 creator 的外键。代码无法运行,因为 Band 在源代码中位于 User 之后。所以我转发声明class Band(models.Model): pass
。遗憾的是,这似乎不是一个好主意,因为现在 Band 是唯一一个在 django admin 中不显示任何界面元素的模型(Bands 模型在那里,只是无法编辑)。
我的问题是,我应该对模型进行哪些更改才能使其正常工作?(如有)
c++ - 我如何转发声明一个已被 typedef 的类?
我有一个字符串类,不出所料,它使用不同的实现,具体取决于是否启用了 UNICODE。
这很好用,但我目前有一个问题,我需要转发声明 StringT typedef。我怎样才能做到这一点?
我不能这样做typedef StringT;
,这使得前向声明变得棘手。是否可以对这种类型定义的类型进行前向声明,而不必将上面的代码传递到头文件的顶部?
c++ - C++ 类前向声明的缺点?
我想在我的软件中使用类的前向声明,所以我可以有 typedef
并在类完整声明中使用它们。
像这样:
所以我的问题是:这种方法有什么缺点吗?我记得一些关于前向声明的析构函数问题的讨论,但我并没有把所有东西都拿出来。
或者有没有其他选择来实现这样的事情?
谢谢。
编辑:我找到了我所指的讨论:这里
c++ - 有没有办法转发声明协方差?
假设我有这些抽象类Foo
和Bar
:
进一步假设我有派生类ConcreteFoo
和ConcreteBar
. 我想协变地改进foo()
和bar()
方法的返回类型,如下所示:
这不会编译,因为我们心爱的单通道编译器不知道ConcreteBar
它将继承自Bar
,因此这ConcreteBar
是一个完全合法的协变返回类型。简单的前向声明ConcreteBar
也不起作用,因为它不会告诉编译器任何有关继承的信息。
这是我必须忍受的 C++ 的一个缺点,还是实际上有办法解决这个困境?
c++ - 前向声明和模板函数错误
目前我对前向声明和模板函数有一个令人沮丧的问题。我一直在尝试谷歌搜索并进行一些修改,但到目前为止没有任何效果。以下是代码片段:
这是我得到的错误消息,它也显示在代码中:./bt-taskscheduler.h:159: error: forward declaration of 'struct TaskScheduler' ./bt-taskscheduler.h:229: error:不完整类型'struct TaskScheduler'的无效使用</p>
谁能告诉我这段代码出了什么问题?任何帮助表示赞赏..
c++-cli - 如何在 C++/CLI 中转发声明属性?
我在 C++/CLI 中有一个类,我想提供一个属性。我想在头文件中声明该属性,然后在 .cpp 文件中实现该属性。
这是标题:
如果我声明头文件并且不在 cpp 中放置任何内容,我会收到以下错误:
由此我得出结论,我应该将该属性实现为
但是,当我编译这段代码时,我得到了一堆错误。第一个错误(其他错误是第一个错误的结果)是:
任何人都可以对这个问题有所了解吗?
c++ - 有没有更短的方法来转发在命名空间中声明一个类?
我可以通过这样做在命名空间中转发声明一个函数:
这相当于:
在命名空间中转发声明一个类:
有没有更短的方法来做到这一点?我在想一些事情:
c++ - C++ 类依赖
我的班级有一些问题,因为它们都相互依赖,如果没有声明另一个,就不能声明一个。
如您所见,“块”类需要知道“板”是什么,反之亦然。提前致谢!
c++ - 转发 typedef 声明、对构建时间的影响和命名约定
我很好奇我的 typedef 方法对我的构建的影响。
请考虑以下示例。
每当我遇到上述情况时,都会将 typedef 驱动到头文件中,因此需要我将其 #include 到头文件中。我担心缺少前向声明可能会导致更长的构建时间。
根据这篇文章的评论:
我可以转发声明类,typedef 引用或指针,然后在 .cpp 文件中 #include。这应该允许更快的构建时间。我对此的结论是否正确?
如果是这样,我最终会得到这样的 typedef:
这对我来说看起来不是很干净的代码,我想我已经阅读了反对这个的文章/帖子(不一定是 SO)。
你觉得这可以接受吗?更好的选择?
更新:使用 Michael Burr 的回答,我只能解决指针和引用的情况。但是,在我的函数中尝试使用 sizeof() 时遇到了问题。例如,假设该类具有以下功能:
或者,这会起作用。
我正在使用 Microsoft Visual C++ 6.0。这是编译器的错误还是通常违反标准?
在有错误的示例中,请注意 sizeof(SomeClass) 是正在被 typedef 的原始类,而不是在 Foo 中创建的新 typedef 类型。我很惊讶通过在 typedef 中进行前向声明限制了我对作为 typedef 的类执行任何操作的能力。
跟进:刚刚使用 XCode 编译器对其进行了测试,我相信我的 sizeof 问题是 Visual C++ 6.0 编译器问题。我猜 XCode 编译器可能是正确的,但我目前没有其他尝试。因此,虽然这提供了信息,但我个人对我目前的任务不走运,因为最佳答案不适用于我的情况。