Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Старые исходники не компилируются, vs6 -> vs2008 
V
    Опции темы
v00d00
Дата 26.10.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Потребовалось откопать для работы в Delphi (внимение. да я не дружу с С++). Пример для работы с древним апи ODMA.

Пытаюсь в 2008 вижуал студии собрать исходник ODMA connection manager.

Выдает следующую ошибку:

Код

Error    12    error C2664: 'ODMDmsList::Remove' : cannot convert parameter 1 from 'ODMDms *' to 'const ODMDms *&' 


и еще парочку аналогичных. Как с этим бороться?

Возможно пригодятся исходники

Определение 
Код

void Remove( const ODMDms*& rItem )
    {
      ...
    }



Вызов
Код


     ODMDms* pDms = iterator.Current();     // The DMS to call for results      
     m_pObject->m_queryDmss.Remove(pDms);






Это сообщение отредактировал(а) v00d00 - 26.10.2009, 19:13
PM MAIL   Вверх
v00d00
Дата 26.10.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Что это вообще за ад?
Код

const ODMDms*& rItem


PM MAIL   Вверх
zim22
Дата 26.10.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Код

const ODMDms* pDms = iterator.Current();    

***
Цитата(v00d00 @  26.10.2009,  18:16 Найти цитируемый пост)
Что это вообще за ад?

это ад С++ smile
читается справа на лево: rItem является ссылкой на указатель на тип ODMDms, который является константой
оператор ссылка (&) нужен для того, чтобы можно было изменить адрес указателя, переданного в функцию

Это сообщение отредактировал(а) zim22 - 26.10.2009, 19:19


--------------------
PM MAIL   Вверх
v00d00
Дата 27.10.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



разве const не противоречит &?

Видимо в более ранней версии компилятора от мелкософта такой синтаксис считался нормой.
В новой версии это отказывается компилироваться. Почему? 

Как в вызове правильно привести тип?

Добавлено через 6 минут и 52 секунды
а вообще это по смыслу эквивалентно 
Код

const ODMDms** rItem

Единственное отличие в том что в коде не придется разыменовывать адресс для работы с указателем...


Тааак. А почему же оно не компилируется? Вроде данные передаются правильно...
PM MAIL   Вверх
v00d00
Дата 27.10.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вопрос.

Как правильно передать параметр в функцию с заголовком такого вида
Код

void foo(const integer*& item)
{
  ...
}


Добавлено @ 16:38
Получилось только так: 
Код

            const ODMDms* param = pDms;
            m_pObject->m_queryDmss.Remove(param);


но это имхо бред. в вызове кастануть тип не получается



Это сообщение отредактировал(а) v00d00 - 27.10.2009, 16:39
PM MAIL   Вверх
bsa
Дата 27.10.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Скорее всего данное API является ошибкой. Так как скорее всего речь идет о константной ссылке, которая из-за использования препроцессора превратилась в ссылку на константный указатель. Короче, твое решение единственно правильное, если не менять API.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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