Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
#1

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

20.07.2013, 16:57. Просмотров 591. Ответов 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++):

Конфликт пространств имён - C++
Есть у меня два разных класса, имеющими одно название. И есть другие две библиотеки, использующие эти классы (каждая свой). Я...

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

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

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

Пространство имён - C++
Прочитал сейчас раздел про пространство имён, но так всё равно и не понял, почему лучше не использовать директиву using. Допустим,...

Пространство имён - C++
Допустим я пишу свою программу, для которой пишу свои классы. Стоит ли создавать для них пространство имён? И вообще, в каких ситуациях...

4
Croessmah
Эксперт CЭксперт С++
13409 / 7559 / 853
Регистрация: 27.09.2012
Сообщений: 18,597
Записей в блоге: 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 / 0
Регистрация: 15.01.2012
Сообщений: 181
20.07.2013, 17:03  [ТС] #3
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 17:10 #4
Цитата Сообщение от PG94 Посмотреть сообщение
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
В данном случае это невозможно.
0
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 18:12 #5
Цитата Сообщение от PG94 Посмотреть сообщение
Но если написать Graph_lib::Polygon poly; то всё запускается без проблем.
вот так и надо писать, а про using namespace-ы лучше вообще забыть
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 18:12
Привет! Вот еще темы с ответами:

Пространство имён! - C++
Как лучше указывать пространство имён? using namespace std вначале? или std::? вроде бы проще первый вариант, но почему используют...

Пространство имён - C++
Добрый вечер, 1) как правильно называется часть "Foo::" в этой записи void Foo::hello(){} 2) и почему не сделают using namespace...

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

Одноуровневая таблица имён - C++
Здравствуйте! Дали задание, организовать таблицу имен. Как нужно сделать, написано ниже. Исходный код ниже (создание, заполнение и вывод...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
20.07.2013, 18:12
Ответ Создать тему
Опции темы

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