Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
PG94
2 / 2 / 12
Регистрация: 15.01.2012
Сообщений: 181
#1

Конфликт имён - C++

20.07.2013, 16:57. Просмотров 684. Ответов 4
Метки нет (Все метки)

Добрый день.
При запуске программы возникает следующая ошибка:
d:\study\programming\myprojects\fltk_project\fltk_project\main.cpp(19): error C2872: Polygon: неоднозначный символ
может быть "c:\program files (x86)\windows kits\8.0\include\um\wingdi.h(4972) : BOOL Polygon(HDC,const POINT *,int)"
или "d:\study\programming\myprojects\fltk_project\fltk_project\graph.h(229) : Graph_lib::Polygon"
Сейчас изучаю книгу Страуструпа "Программирование. Принципы и практика использования C++ ", дело дошло до графики с использованием библиотеки FLTK и некоторых доп. файлов, написанных автором. Данная ошибка возникла при попытке запуска первого примера:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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
}
Но если написать Graph_lib::Polygon poly; то всё запускается без проблем. Подскажите, пожалуйста, как сделать так, чтобы автоматически исключался из рассмотрения второй вариант.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 16:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Конфликт имён (C++):

Конфликт пространств имён
Есть у меня два разных класса, имеющими одно название. И есть другие две...

Конструкторы в списках и конфликт имён
Здравтсвуйте, уважаемые программисты, меня волнуют следующие вопросы: 1) Мне...

Найти причины и способы исправления ошибки (конфликт имён?)
Пишу программу для загрузки пары в стек: #include<iostream> using namespace...

Пространство имён!
Как лучше указывать пространство имён? using namespace std вначале? или ...

пространство имён
Здравствуйте. Из C# я примерно представляю что такое пространство имён. Но...

Пространства имён с++
Может я отсталый совсем, но перечислите пожалуйста все известные вам...

4
Croessmah
++Ͻ
14160 / 8085 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
20.07.2013, 16:59 #2
Цитата Сообщение от PG94 Посмотреть сообщение
Данная ошибка возникла при попытке запуска первого примера:
Написано же:
d:\study\programming\myprojects\fltk_project\fltk_project\ma in.cpp(19): error C2872: Polygon: неоднозначный символ
может быть "c:\program files (x86)\windows kits\8.0\include\um\wingdi.h(4972) : BOOL Polygon(HDC,const POINT *,int)"
или "d:\study\programming\myprojects\fltk_project\fltk_project\g raph.h(229) : Graph_lib::Polygon"
Добавлено через 39 секунд
вот это можно убрать:
C++
1
using namespace Graph_lib;   // our graphics facilities are in Graph_lib
и везде обращаться через пространство имен Graph_lib
1
PG94
2 / 2 / 12
Регистрация: 15.01.2012
Сообщений: 181
20.07.2013, 17:03  [ТС] #3
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 17:10 #4
Цитата Сообщение от PG94 Посмотреть сообщение
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
В данном случае это невозможно.
0
BigLow
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 18:12 #5
Цитата Сообщение от PG94 Посмотреть сообщение
Но если написать Graph_lib::Polygon poly; то всё запускается без проблем.
вот так и надо писать, а про using namespace-ы лучше вообще забыть
0
20.07.2013, 18:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 18:12
Привет! Вот еще темы с решениями:

Пространство имён
Прочитал сейчас раздел про пространство имён, но так всё равно и не понял,...

Пространство имён
Добрый вечер, 1) как правильно называется часть "Foo::" в этой записи void...

Пространство имён
Допустим я пишу свою программу, для которой пишу свои классы. Стоит ли...

Не является пространством имён
Такой код не работает, как быть? P.S. пишу в Visual Studio 2017 Community ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru