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

Конфликт имён

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

Добрый день.
При запуске программы возникает следующая ошибка:
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"
Сейчас изучаю книгу Страуструпа "Программирование. Принципы и практика использования 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2013, 16:57
Ответы с готовыми решениями:

конфликт имен
пытаюсь вызвать CButton* button= (CButton*)GetDlgItem(IDC_BUTTON); // пишет что определено в...

Конфликт имен в библиотеках
Здравствуйте. Возникла проблема при одновременном подключении #include <X11/extensions/xf86vmode.h>...

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

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

4
Don't worry, be happy
16921 / 9797 / 1887
Регистрация: 27.09.2012
Сообщений: 24,295
Записей в блоге: 2
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_proje ct\g raph.h(229) : Graph_lib::Polygon"
Добавлено через 39 секунд
вот это можно убрать:
C++
1
using namespace Graph_lib;   // our graphics facilities are in Graph_lib
и везде обращаться через пространство имен Graph_lib
1
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
20.07.2013, 17:03  [ТС] 3
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
20.07.2013, 17:10 4
Цитата Сообщение от PG94 Посмотреть сообщение
Спасибо, но я хотел добиться как раз того, чтобы всё работало со строкой using namespace Graph_lib;
В данном случае это невозможно.
0
55 / 55 / 6
Регистрация: 07.07.2013
Сообщений: 345
20.07.2013, 18:12 5
Цитата Сообщение от PG94 Посмотреть сообщение
Но если написать Graph_lib::Polygon poly; то всё запускается без проблем.
вот так и надо писать, а про using namespace-ы лучше вообще забыть
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2013, 18:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Конфликт имен при множественном наследовании struct
Уважаемые гуру, помогите разрешить конфликт имён в приведённом ниже примере, не изменяя структуру...

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

Использование имен предопределенных объектов в качестве имен переменных
Есть код: #include <iostream> using namespace std; void func() { int cout; cout <<cout...

Не возникает ли коллизия имен, если использовать два пространства имен, и в каждом из них будут одноименные?
Вот например namespace nms1 { int gh; } namespace nms2 { int gh;


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

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

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