Stroustrup的PPP书中的Polygon问题

时间:2014-01-07 13:54:29

标签: c++ user-interface

我阅读了使用C ++的编程原理和实践,Stroustrup的书。在第12章和第441页中,有以下代码:

//
// This is example code from Chapter 12.3 "A first example" of
// "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup
//

#include "Simple_window.h"    // get access to our window library
#include "Graph.h"            // get access to our graphics library facilities

//------------------------------------------------------------------------------

int main()
{
    using namespace Graph_lib;   // our graphics facilities are in Graph_lib

    Point tl(100,100);           // to become top left  corner of window

    Simple_window win(tl,600,400,"Canvas");    // make a simple window

    Polygon poly;                // make a shape (a polygon)

    poly.add(Point(300,200));    // add a point
    poly.add(Point(350,100));    // add another point
    poly.add(Point(400,200));    // add a third point 

    poly.set_color(Color::red);  // adjust properties of poly

    win.attach (poly);           // connect poly to the window

    win.wait_for_button();       // give control to the display engine
}

//------------------------------------------------------------------------------

当我运行代码时,我得到13个错误,其中必须是 Polygon 标识符。例如,第一个错误是: 错误C2872:'多边形':含糊不清的符号

为什么我的编译器不知道 Polygon

2 个答案:

答案 0 :(得分:1)

如果符号不明确,请尝试使用其限定名称:

Graph_lib::Polygon poly;

答案 1 :(得分:0)

环境:操作系统:Win 10 Pro 1909,VS 2019 v16.4.5

我正在研究Stroupstrup的 PPP 第二版,并且还收到错误消息“多边形不明确”。

我认为问题与路径有关。当我打开VS 2019的 x64本机工具命令提示符并键入 Path 时,我找到了对 .. \ Program Files(x86)\ Windows Kits的引用\ 10 \ Windows Performance Toolkit \ 。当我在Visual Studio中执行查找文件并在 Visual C ++包含目录中搜索单词多边形时,我得到了35条结果。结果之一是Windows.UI.Xaml.Shapes.0.h头文件中的名为Polygon的结构化变量。该头文件与上述Windows Kits目录位于同一目录中。

假定Visual Studio与VS 2019的 x64本机工具命令提示符加载在相同的路径中,则似乎Visual Studio正在拾取多边形的多个定义。因此,有必要通过指定Graph_lib作为命名空间来解决歧义。

指定名称空间对我来说解决了错误“多边形不明确”。与abbasi不同,我没有从FLTK网站下载FLTK库。相反,我使用vcpkg下载并安装了它。有关安装FLTK的更多信息,请参见我对此Stack Overflow question的回答。