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

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

Восстановить пароль Регистрация
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
20.07.2013, 16:57     Конфликт имён #1
Добрый день.
При запуске программы возникает следующая ошибка:
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; то всё запускается без проблем. Подскажите, пожалуйста, как сделать так, чтобы автоматически исключался из рассмотрения второй вариант.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2013, 16:57     Конфликт имён
Посмотрите здесь:

Конструкторы в списках и конфликт имён C++
C++ Подключение пространства имён
Пространство имён C++
Пространство имён! C++
C++ Пересечение имён функций
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 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
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
20.07.2013, 17:03  [ТС]     Конфликт имён #3
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
castaway
Эксперт С++
4839 / 2978 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
20.07.2013, 17:10     Конфликт имён #4
Цитата Сообщение от PG94 Посмотреть сообщение
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
В данном случае это невозможно.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 18:12     Конфликт имён #5
Цитата Сообщение от PG94 Посмотреть сообщение
Но если написать Graph_lib::Polygon poly; то всё запускается без проблем.
вот так и надо писать, а про using namespace-ы лучше вообще забыть
Yandex
Объявления
20.07.2013, 18:12     Конфликт имён
Ответ Создать тему
Опции темы

Текущее время: 04:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru