2014-01-02 3 views
-2

Я пытаюсь объявить объект в C++:Какой смысл сообщения об ошибке компилятора «многоугольник ambigious»

Polygon poly; 

и компилятор говорит, что это «многоугольник ambigious». Что это значит?

Вот полный код:

#include "Graph.h" 
#include "Simple_window.h" 
#include "point.h" 
#include "Window.h" 

using namespace Graph_lib; 

int main(int argc, char **argv) 
{ 
    Point tl(100,100); 

    Simple_window win(tl,600,400,"canvas"); 

    Axis xa(Axis::x, Point(20,300),280 ,10, "x axis"); 

    win.attach(xa); 
    win.set_label("canvas #2"); 
    win.wait_for_button(); 

    Axis ya(Axis::y, Point(20,300),280 ,10, "y axis"); 
    ya.set_color(Color::cyan); 
    ya.label.set_color(Color::dark_red); 
    win.attach(ya); 
    win.set_label("canvas #3"); 
    win.wait_for_button(); 

    Function sine(sin,0,100, Point(20,150),1000,50,50); 
    win.attach(sine); 
    win.set_label("canvas #4"); 
    win.wait_for_button(); 

    sine.set_color(Color::blue); 

    Polygon poly; ///ERROR! Ambigious!!! 
    poly.add(Point(300,200)); 
    poly.add(Point(350,100)); 
    poly.add(Point(400,200)); 

    poly.set_color(Color::red); 
    poly.set_style(Line_style::dash); 
    win.attach(poly); 
    win.set_label("canvas #5"); 
    win.wait_for_button(); 
} 

Как вы можете видеть, что есть конфликт между заголовком написано пользователем, и некоторые из заголовка включены некоторые где. Это уже после установки FLTK 1.3.

1>------ Build started: Project: test, Configuration: Debug Win32 ------ 
1> Graph.cpp 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.cpp(65): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.cpp(131): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.cpp(132): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.cpp(389): warning C4800: 'void *' : forcing value to bool 'true' or 'false' (performance warning) 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.cpp(414): warning C4018: '>=' : signed/unsigned mismatch 
1> GUI.cpp 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(107): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(112): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(117): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(130): warning C4018: '<' : signed/unsigned mismatch 
1>   c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(130) : while compiling class template member function 'Graph_lib::Vector_ref<T>::~Vector_ref(void)' 
1>   with 
1>   [ 
1>    T=Graph_lib::Button 
1>   ] 
1>   c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(99) : see reference to class template instantiation 'Graph_lib::Vector_ref<T>' being compiled 
1>   with 
1>   [ 
1>    T=Graph_lib::Button 
1>   ] 
1> Simple_window.cpp 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(107): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(112): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(117): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(130): warning C4018: '<' : signed/unsigned mismatch 
1>   c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(130) : while compiling class template member function 'Graph_lib::Vector_ref<T>::~Vector_ref(void)' 
1>   with 
1>   [ 
1>    T=Graph_lib::Button 
1>   ] 
1>   c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(99) : see reference to class template instantiation 'Graph_lib::Vector_ref<T>' being compiled 
1>   with 
1>   [ 
1>    T=Graph_lib::Button 
1>   ] 
1> test.cpp 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(107): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(112): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(117): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(36): error C2872: 'Polygon' : ambiguous symbol 
1>   could be 'c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wingdi.h(4548) : BOOL Polygon(HDC,const POINT *,int)' 
1>   or  'c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(256) : Graph_lib::Polygon' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(36): error C2872: 'Polygon' : ambiguous symbol 
1>   could be 'c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wingdi.h(4548) : BOOL Polygon(HDC,const POINT *,int)' 
1>   or  'c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(256) : Graph_lib::Polygon' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(36): error C2146: syntax error : missing ';' before identifier 'poly' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(36): warning C4551: function call missing argument list 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(36): error C2065: 'poly' : undeclared identifier 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(37): error C2065: 'poly' : undeclared identifier 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(37): error C2228: left of '.add' must have class/struct/union 
1>   type is ''unknown-type'' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(38): error C2065: 'poly' : undeclared identifier 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(38): error C2228: left of '.add' must have class/struct/union 
1>   type is ''unknown-type'' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(39): error C2065: 'poly' : undeclared identifier 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(39): error C2228: left of '.add' must have class/struct/union 
1>   type is ''unknown-type'' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(41): error C2065: 'poly' : undeclared identifier 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(41): error C2228: left of '.set_color' must have class/struct/union 
1>   type is ''unknown-type'' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(42): error C2065: 'poly' : undeclared identifier 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(42): error C2228: left of '.set_style' must have class/struct/union 
1>   type is ''unknown-type'' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\test.cpp(43): error C2065: 'poly' : undeclared identifier 
1> Window.cpp 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(45): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4305: 'initializing' : truncation from 'Graph_lib::Color::Transparency' to 'char' 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(47): warning C4309: 'initializing' : truncation of constant value 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(107): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(112): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(117): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\window.cpp(74): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\window.cpp(76): warning C4018: '<' : signed/unsigned mismatch 
1>c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(130): warning C4018: '<' : signed/unsigned mismatch 
1>   c:\users\bryan\documents\visual studio 2010\projects\test\test\graph.h(130) : while compiling class template member function 'Graph_lib::Vector_ref<T>::~Vector_ref(void)' 
1>   with 
1>   [ 
1>    T=Graph_lib::Button 
1>   ] 
1>   c:\users\bryan\documents\visual studio 2010\projects\test\test\gui.h(99) : see reference to class template instantiation 'Graph_lib::Vector_ref<T>' being compiled 
1>   with 
1>   [ 
1>    T=Graph_lib::Button 
1>   ] 
1> Generating Code... 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 
+5

Пожалуйста, разместите минимальный код для воспроизведения ошибки и самой ошибки компилятора. – juanchopanza

+0

Поделитесь более подробной информацией. – CreativeMind

+0

Это может быть лучше подходит для http://english.stackexchange.com :) Неоднозначное означает, что это может означать более одного, т. Е. Где-то существует другая 'someshape'. – StuartLC

ответ

2

Это означает, что вы объявили два или более лиц (типы, функции, переменные и т.д.) называется Polygon, и компилятор не может сказать, какой вы имеете в виду в данном контексте.

Полное сообщение об ошибке должно сообщить вам, какие объявления вызывают неоднозначность. Не видя их, трудно догадаться, как лучше всего исправить ошибку.

UPDATE: Теперь Вы разместили код, но не полное сообщение об ошибке или проблемные заявления, я рискну предположить, что Polygon объявлен как в глобальном, так и Graph_lib пространств имен. Затем вы сбрасываете все Graph_lib в глобальное пространство имен, делая это имя неоднозначным. Если это так, то для устранения двусмысленности вам необходимо указать ::Polygon или Grapg_lib::Polygon.

+0

@ user3153639 Пожалуйста, не редактируйте ответы с кодом - отредактируйте свой вопрос. – JBentley

0

, потому что там также имеет Polygon определена в wingdi.h

enter image description here

РЕШЕНИЯ кладется NOGDI в препроцессоре. В свойствах проекта Visual Studio -> Свойства конфигурации -> C/C++ -> Препроцессор -> Определения препроцессора -> добавьте NOGDI. enter image description here

+0

Пожалуйста, прочтите это [как-ответ] (http://stackoverflow.com/help/how-to-answer) и следуйте рекомендациям, чтобы обеспечить качественный ответ. – thewaywewere

Смежные вопросы