Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2010, 21:15   #1
sofen.ru
 
Регистрация: 31.10.2010
Сообщений: 8
По умолчанию класс Rectangle совпадает с функцией Rectangle

Пишу свой класс Rectangle, который при отрисовки использует функцию Rectangle из GDI. Возникает ошибка из-за того, что имена одинаковые. Но менять имя своего класса я, естественно, не хочу... Как решить противоречие?
sofen.ru вне форума Ответить с цитированием
Старый 05.11.2010, 21:48   #2
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Свое пространство имен (namespace) подойдет? Для своей библиотеки тебе его все равно придется вводить, чтобы по максимуму избежать конфликтов.
still_alive вне форума Ответить с цитированием
Старый 05.11.2010, 21:54   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Пихни свой класс в особое пространство имен.
Например MyGraph
А потом указывай MyGraph::Rectangle... Это и будет твое персонально Space
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2010, 05:58   #4
sofen.ru
 
Регистрация: 31.10.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от still_alive Посмотреть сообщение
Свое пространство имен (namespace) подойдет? Для своей библиотеки тебе его все равно придется вводить, чтобы по максимуму избежать конфликтов.
У меня получается, что функцию Rectangle я буду использовать только один раз, а класс Rectangle сто, тысячу.... незнаю сколько... и мне теперь придёться всегда писать ns::Rectangle ... как-то неудобно получается...
sofen.ru вне форума Ответить с цитированием
Старый 06.11.2010, 06:36   #5
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Дык ты тогда не для класса пространство создавай, а для функции.
Код:
namespace space
{
	void funk ()
	{
		//bla-bla-bla
	}
}

int main ()
{
	space::funk ();
	return 0;
}
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

Последний раз редактировалось Lunex.08; 06.11.2010 в 06:40.
Lunex.08 вне форума Ответить с цитированием
Старый 06.11.2010, 14:32   #6
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Код:
#include <iostream>

// можно апишные функции обернуть и запихнуть в отдельное пространство
namespace SystemAPI
{
    void API_Rectangle()
    {
        std::cout << "SystemAPI::API_Rectangle" << std::endl;
    }
    // ...
}

// можно по-другому
void Rectangle()
{
    std::cout << "System API Rectangle" << std::endl;
}

// создать свое пространство и запихнуть все свое
namespace Sofenru
{
    struct Rectangle
    {
        Rectangle() { std::cout << "Rectangle class ctor" << std::endl; }
    };
    void callAPIRectangle() { ::Rectangle(); // вызвать чужое
                              Rectangle(); } // вызвать свое
}

// в файлах, где системная Rectangle() не видна, можно написать
// using namespace Sofenru; и дальше просто использовать Rectangle без Sofenru::

int main()
{
    SystemAPI::API_Rectangle();
    Rectangle();
    Sofenru::callAPIRectangle();
    Sofenru::Rectangle();
    return 0;
}
still_alive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
canvas.rectangle Terrance! Помощь студентам 3 22.09.2010 12:59
Проекция Rectangle _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 8 09.09.2010 11:13
Определить, совпадает ли текст с конечным отрезком ряда 0123456789 stasig Паскаль, Turbo Pascal, PascalABC.NET 2 09.12.2008 22:52