gpt4 book ai didi

c++ - Stroupstrup 图形库错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:36 25 4
gpt4 key购买 nike

我是 C++ 的新手,在我的编程设计和概念入门类(class)中,我们现在介绍图形。我已经能够仅使用 FLTK 的库来制作程序,但我们必须使用 Bjarne 的库,例如 GUI.hGraph.hSimple_window.hPoint.h。像简单的窗口程序这样的简单程序将无法编译并给出通常的响应:

Simple_window.h:17: error: reference to ‘Window’ is ambiguous

我也试过编译使用:

fltk-config --compile main.cpp

这会产生相同的结果。

我已经尝试运行 Bjarne 在文件夹中提供的 make 文件,但总是出现错误并且没有生成 .o 文件。

注意:我也试过在 mac OSXUbuntu 上编译。

最佳答案

我从未使用过这些库中的任何一个,但我看到 FLTK 的教程总是以 using namespace fltk; 开头声明,它导入所有 FLTK 类,包括 fltk::Window到根命名空间。

B. Stroustrup 的库包含在名为 Graph_lib 的命名空间中它还有一个名为 Window 的类.现在,文件 Simple_window.husing namespace Graph_lib;开头的语句,导入 Graph_lib::Window到根命名空间。这就是歧义的来源。

所以我建议省略 using声明(至少来自 using namespace fltk )并使用具有完整规范的 FLTK 类(例如 fltk::Window 而不仅仅是 Window )。这应该可以解决歧义。

作为旁注,这是一个很好的例子,为什么要有 using namespace在头文件中的文件级别是个坏主意。

引用资料:
http://www.fltk.org/doc-2.0/html/index.html http://www.stroustrup.com/Programming/Graphics/Simple_window.h

编辑:我试图编译包含 Simple_window 的库我自己,至少在 linux 下,歧义似乎在类 Graph_lib::Window 之间。来自图书馆和 typedef Window也来自 xlib。 xlib 是 C 库,你不能对它做任何事情,所以你必须摆脱 using namespace Graph_lib在 Stroustup 的图书馆中。

在文件中Simple_window.h :

  • 删除using namespace Graph_lib;
  • 更改WindowGraph_lib::Window
  • ButtonGraph_lib::Button
  • AddressGraph_lib::Address

然后在文件Simple_window.cpp :

  • 更改AddressGraph_lib::Address再次
  • reference_to<Simple_window>Graph_lib::reference_to<Simple_window>

然后它应该编译。如果您的版本与 stroustrup.com 上的版本不同,您可能需要完全限定(添加 Graph_lib:: )更多类。

关于c++ - Stroupstrup 图形库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606097/

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