Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt и мои переопределённые операции. 
V
    Опции темы
Elfet
Дата 21.4.2010, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Всем привет

Подскажите что делать?
У меня в библиотеке есть такая штука:
Код

template<class T>
inline ostream & operator<<(show s, const T & t)


А в интерфейсе начинает говорить мне следующее:
Цитата

D:/Qt/smart-flow/SmartFlow/../../2010.02.1/qt/include/QtGui/../../src/gui/kernel/qsizepolicy.h:123: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
D:/Qt/smart-flow/SmartFlow/../../2010.02.1/qt/include/QtGui/../../src/gui/kernel/qsizepolicy.h:123: note: candidate 1: operator<<(int, int) <built-in>
D:/Qt/smart-flow/SmartFlow/../SmartFlowLib/Source/Debug.h:28: note: candidate 2: std::ostream& sf::operator<<(sf::show, const T&) [with T = QSizePolicy::SizePolicyMasks]


Типа они конфликтуют операция встроенная << и моя.

Вот show:
Код

struct show
{
public:
    ostream * out;
    int size;
    show() { size = 3; }
    show(int number) { size = number; }
};


Как можно сделать что бы они не конфликтовали? Заранее спасибо!


--------------------
PM MAIL WWW Skype   Вверх
Elfet
Дата 21.4.2010, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Вот что я придумал  smile 
Код

struct int_holder
{
public:
    int i;
    int_holder(int number) { i = number; }
};

struct show
{
public:
    ostream * out;
    int size;
    show() { size = 3; }
    show(int_holder number) { size = number.i; }
};



--------------------
PM MAIL WWW Skype   Вверх
borisbn
Дата 21.4.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Можно для конструктора show(int) указать implicit

Это сообщение отредактировал(а) borisbn - 21.4.2010, 20:06


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
dix75
Дата 21.4.2010, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



может explicit

Elfet
покажи как ты выводил в поток

Это сообщение отредактировал(а) dix75 - 21.4.2010, 20:25


--------------------
save your mind
PM MAIL   Вверх
Elfet
Дата 21.4.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Цитата(dix75 @  21.4.2010,  21:19 Найти цитируемый пост)
так он находит другую
добавь namespace 

У меня есть там namespace - он не помогает.

implicit - что это? smile


--------------------
PM MAIL WWW Skype   Вверх
dix75
Дата 21.4.2010, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



так он тебе  и говорит что есть два кандидата 
ты либо уточни вызов, либо измени сигнатуру своей функции

добавть explicit  к конструктору, чтобы убрать автоматическое приведение твоего класса к int 

Это сообщение отредактировал(а) dix75 - 21.4.2010, 20:32


--------------------
save your mind
PM MAIL   Вверх
Elfet
Дата 21.4.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Код

explicit show(int number) { size = number; }

круто! smile


--------------------
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.