gpt4 book ai didi

c++ - 绕过两个类之间的歧义

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:51 24 4
gpt4 key购买 nike

我已经从 Rad studio 的官方网站下载了 TVersionInfo VCL,并在我的 IDE 中成功安装了它,因为它们出现在我的工具箱面板中。将它粘贴到我的项目中并第一次尝试构建它。我确信它会构建正常,因为我已经运行了它附带的测试项目。没问题。 但是在编译期间我的项目中出现了错误。由于使用 Fib plus 包进行 interbase 数据库访问连接,这一切都发生在我身上。以下是消息中出现的错误:

Checking project dependencies...
Compiling Invoice.cbproj (Debug configuration)
[BCC32 Error] VersionInfoUI.h(24): E2015 Ambiguity between 'TVersionInfo' and 'Ib_services::TVersionInfo'
Full parser context
main.cpp(10): #include about.h
about.h(11): #include D:\CB2010_VCL\VersionInfo\VersionInfoUI.h
VersionInfoUI.h(11): class TCustomVersionInfoLabel
[BCC32 Error] VersionInfoUI.h(25): E2015 Ambiguity between 'TVersionInfo' and 'Ib_services::TVersionInfo'
Full parser context
main.cpp(10): #include about.h
about.h(11): #include D:\CB2010_VCL\VersionInfo\VersionInfoUI.h
VersionInfoUI.h(11): class TCustomVersionInfoLabel
[BCC32 Error] VersionInfoUI.h(39): E2015 Ambiguity between 'TVersionInfo' and 'Ib_services::TVersionInfo'
Full parser context
main.cpp(10): #include about.h
about.h(11): #include D:\CB2010_VCL\VersionInfo\VersionInfoUI.h
VersionInfoUI.h(11): class TCustomVersionInfoLabel
[BCC32 Error] about.h(16): E2015 Ambiguity between 'TVersionInfo' and 'Ib_services::TVersionInfo'
Full parser context
main.cpp(10): #include about.h
about.h(13): class TfAbout
Failed
Elapsed time: 00:00:04.0

我认为 FIB IB 服务类也有相同的类名,因此两个类名之间存在冲突。如何解决这个问题?如何让两个类像使用命名空间或其他的一样一起工作?

最佳答案

Delphi 为 VCL 组件生成的 .hpp 文件包装在 namespace 中。问题是他们还倾向于在它们的底部使用 using namespace ... 语句将所有内容转储到全局 namespace 中,这完全违背了使用 namespace 的目的。如果您查看此类 .hpp 文件的底部,您将看到 #ifdef 语句,这些语句显示您可以在项目中定义哪些值来禁用此行为。另一种方法是在设计时根本不使用 TVersionInfo。在您的运行时代码中动态创建它,而不是通过 new 运算符,然后您可以指定它来自哪个命名空间。

关于c++ - 绕过两个类之间的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12124062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com