|
|
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Имеются исходники некой библиотеки. Компилирую в Visual Studio 2005. При компиляции - ошибки: Код: plaintext 1. Подскажите, с какими параметрами компилировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:35 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Ваш класс CEnglishName не поддреживает преобразование в const char *, аргумент которого вы указали во втором параметре функции. Возможно просто ошиблись аргументами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:39 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
AkhВаш класс CEnglishName не поддреживает преобразование в const char *, аргумент которого вы указали во втором параметре функции. Возможно просто ошиблись аргументами. Эта библиотека не моя. Объявлено, что компилируется в Линуксе и Windows. Эти исходники для Линукса (скорее всего они же и для Windows). Но из-за скудности познаний в C++ скомпилировать у меня не получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:42 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Тогда надо интерфейс класса CEnglishName и объявление функции, которая вызывается на 292-й строчки файла xutility. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:49 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
AkhТогда надо интерфейс класса CEnglishName и объявление функции, которая вызывается на 292-й строчки файла xutility. В файле xutility классы шаблонов для VS: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Конкретное место ошибки в коде найти маловероятно. И подобных ошибок несколько. Может есть переключатель для приведения типов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:01 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:04 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Нет и быть не могет, приведения типов в шаблонах не работают придется ручками найти все обращения и поправить, скорее всего сравнивается строка в кавычках с CEnglishName ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:08 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
odmit... Конкретное место ошибки в коде найти маловероятно. И подобных ошибок несколько. Может есть переключатель для приведения типов? По этому коду можно только гадать на кофейной гуще. Возможно используются директивы препроцессора для условной компиляции, но это тоже можно понять только по исходному коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:11 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Спасибо всем ответившим. Буду думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:16 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blindedприведения типов в шаблонах не работают В смысле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:27 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Akh blindedприведения типов в шаблонах не работают В смысле? При инстанциации шаблона неявное пробразование типа не работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 13:07 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blinded Akh blindedприведения типов в шаблонах не работают В смысле? При инстанциации шаблона неявное пробразование типа не работает... Имеется ввиду, что template<argA> и termplate<argB> не имеют преобразования, даже если argA имеет преобразование в argB? Тогда, да. По разному можно это тракторвать, так что я не пойму, про что речь. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 13:11 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Не имеется ввиду как раз случай автора топика. Даже ежели у CEnglishName есть преобразование к const char*, сравнить их с помощью приведеннгого шаблона нельзя. Ежели только не указать явно не квалифицировать параметры шаблона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 13:38 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blindedНе имеется ввиду как раз случай автора топика. Даже ежели у CEnglishName есть преобразование к const char*, сравнить их с помощью приведеннгого шаблона нельзя. Ежели только не указать явно не квалифицировать параметры шаблона Борис, ты не прав (с)... Код: plaintext 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. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 15:37 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Имхо, при инстанциации правила обработки синтаксиса шаблона становятся аналогчными обычной функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 15:39 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
AkhИмхо, при инстанциации правила обработки синтаксиса шаблона становятся аналогчными обычной функции. Ничего не говорю - уел Но вот только не поможет преобразование типов автору. Ты внимательно посмотри на предикат которым сравнивают: ежели _Ty1 и _Ty2 не совпадют, то стандартным less пользоваться нельзя(не сможет компилятор правильно инстациировать его); кроме этого при несовпадении типов опреанд должен будет иметь два метода bool operator()(const _Ty1&, const _Ty2&); bool operator()(const _Ty2&, const _Ty1&); и в качестве операнда не получится использовать указатель на функцию - только функциональный объект. В общем код - большая Ж ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 16:30 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blinded AkhИмхо, при инстанциации правила обработки синтаксиса шаблона становятся аналогчными обычной функции. Ничего не говорю - уел Но вот только не поможет преобразование типов автору. Ты внимательно посмотри на предикат которым сравнивают: ежели _Ty1 и _Ty2 не совпадют, то стандартным less пользоваться нельзя(не сможет компилятор правильно инстациировать его); кроме этого при несовпадении типов опреанд должен будет иметь два метода bool operator()(const _Ty1&, const _Ty2&); bool operator()(const _Ty2&, const _Ty1&); и в качестве операнда не получится использовать указатель на функцию - только функциональный объект. В общем код - большая Ж Ну, во первых, какой там используется предикат, это еще загадка. Но если он не шаблонный, то никаких вопросов не возникает. По всей видимости приведенный оператор < показал вам, что там возможно объект функции less<>. Респект! Я так далеко не дошел. Поэтому и не предполагал, что предикат шаблонный. Да, похоже на то, что компилятор не сможет выбрать по какому типу ему инстанцировать less и без явного указания здесь дело не обойдется. Но даже, если фамилию привести к чару со звездочкой, то сравнение указателей ни к чему хорошему не приведет. Чар звездочку к фамилии можно привести через конструктор с одним параметром, поэтому достаточно указать к какому типу инстанцировать предикат. Только вот, теперь загадка: к _Ty1 или Ty2? Если же сдалать _Ty1==_Ty2=_Ty, то все проблемы изчезают, но тогда в коде всегда надо будет точно определять типы передаваемых параметров. Ну, например, явно указывать перобразование через конструктор. Мне кажется это наиболее предпочтительный вариант (если исходники позволяют), т.к. в данном случае не возникнет ни каких неожиданных преобразований типов. Преобразование к чар звездочка тут вводить уже мало того что не надо, а бессмысленно и опасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:10 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Преобразовать к const char* можно, для этого надо less специализировать. Но лучше явно конечно привести к CEnglishName ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:36 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blindedПреобразовать к const char* можно, для этого надо less специализировать. Но лучше явно конечно привести к CEnglishName Я не спорю, что можно. Но это бессмысленно, так как будут сравниваться указатели, а необходимо сравнение строк по указателям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:40 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Ты не понял Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:52 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blindedТы не понял Код: plaintext 1. 2. 3. 4. 5. ??? Это дублирование кода. В объекте уже введен оператор меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:56 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
Но мы же хотели сравнивать указатели.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 18:09 |
|
||
|
Помогите скомпилировать
|
|||
|---|---|---|---|
|
#18+
blindedНо мы же хотели сравнивать указатели.... Я не хотел. Ты правельно написал, что код большая Ж. Поэтому я привел вариант с поддрежкой типизации. Шаблон функции будет строиться по классу, объекты которого должны сравниваться. Поэтому типы аргументов надо объединить в один. И, следовательно для этого должны вводяться конструкторы с одним параметром для приведения чара со звездочкой к фамилии. Раз в коде программы используется сравнение разных типов аргументов, следовательно идеалогия построения должна позволять их приводить друг к другу. Есстесственно, сравниваться должны именно объекты, для которых по смыслу это сравнение и подходит. Поэтому это и есть фамилия. А чар со звездочкой - это что угодно. И мало того, что он не носит информации о том, как надо стравнивать фамилии, он тем более более общий тип. Тем более, по приведенному коду, ни что не мешает сделать сравнение фамилий по этому варианту. Мы будем иметь инкапсуляцию функциональности объекта в нем самом. Что может быть еще более оптимистичней? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 09:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34636002&tid=2028570]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 460ms |

| 0 / 0 |
