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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Портируем код из VC6.0 в VS 2005, Проблемы при портировании кода 
:(
    Опции темы
alexsid1982
Дата 19.3.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Товарищи я в шоке. После многих попыток понять в чем я сдаюсь.

имеем класс
Код

template<class N, class T>
class CStaticTable : public CBaseRecord 
{
protected:
T        table[N::eAmount];
// ...
public: 
// ...
bool    Sort( const TSort sortp = MemSortP );
}:

template<class N, class T> bool CStaticTable<N, T>::Sort( const TSort sortp )
{
    ::qsort( CStaticTable::mem, iused, sizeof( T ), _compare_function( sortp ) );
    
    return true;
}



Проблема в том что CStaticTable::mem нигде  в классе не определен.
В базовом классе его тоже нет.
Код

class CBaseRecord {
private:
// ...
public:
// перегруженные операторы new  и delete
};


никаких #define для mem тоже не обнаружено.
Очевидно что CStaticTable::mem должен быть  T CStaticTable::table[N::eAmount]

Теперь парадокс. Код компилируется на VC 6.0  но на VS 2005 компилироваться отказывается.
Кто может объяснить???


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



ты скопировал с компилера?
тогда как компилится
Код
}:

???

Добавлено через 1 минуту и 54 секунды
и второе. что будет в VS 6.0 если написать (после строки с qsort):

а. CStaticTable::mem;
б. CStaticTable<N, T>::mem;
в. mem;

?


--------------------
user posted image    user posted image
PM MAIL   Вверх
alexsid1982
Дата 20.3.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



по первому - моя ошибка

по второму 

в VC все работает на ура
в VS 2005 ничего не работает

Вот такая ошибка
Error    15    error C2039: 'mem' : is not a member of 'CStaticTable<N,T>'    367    

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


Эксперт
****


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

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



А ты случаем не пытаешься этот шаблон во втором случае использовать? А то умные книжки по шаблонам говорят, что компилятор проверяет их только на соответствие синтаксису, если они не используются.
PM   Вверх
alexsid1982
Дата 21.3.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так он и в первом случае используется...

Смысл в том, что один и тот же код на VC6.0 
компилируется, а на VS2005 не компилируется. Вот что расстраивает.
PM MAIL   Вверх
Любитель
Дата 22.3.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Можо полный код или сцылку, откуда сие?


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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(alexsid1982 @  21.3.2008,  21:09 Найти цитируемый пост)
Смысл в том, что один и тот же код на VC6.0 
компилируется, а на VS2005 не компилируется. Вот что расстраивает. 

А чего удивляться, компиляторы-то разные. 6й был более всеядным и некоторые баги прощал. А 2003 (и последующие) лучше диагностирует, вот и все.


--------------------
...
PM   Вверх
Alek86
Дата 24.3.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



Цитата(Earnest @  24.3.2008,  13:58 Найти цитируемый пост)
 некоторые баги

ничего себе "некоторые баги"...
сам по себе переменные в классы добавлять...
smile

думаю, что проблема в том, что у тебя 2 класса CStaticTable определено. Твой и стандартный. И они как-то пересекаются
А в VS2005 стандартный убрали или отсунули куда-то


--------------------
user posted image    user posted image
PM MAIL   Вверх
Dennnis
Дата 24.3.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А объект класса template<class N, class T> class CStaticTable где-нибудь создается? Просто тела методов шаблонных классов не проверяются при компиляции если не создан объект этого класса.
--------------------
Get Rich or Die Tryin'
PM   Вверх
Alek86
Дата 24.3.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

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



Dennnis
Цитата(alexsid1982 @  21.3.2008,  20:09 Найти цитируемый пост)
Так он и в первом случае используется...




--------------------
user posted image    user posted image
PM MAIL   Вверх
alexsid1982
Дата 31.3.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



забил на попытки понять в чем смысл...
Переделал на использование T CStaticTable::table[N::eAmount]

Вроде работает smile

ЗЫ: Вариант с двумя классами не прокатил.... 

Код тоже предоставить не можно... Полный код весит очень много 
+ проект закрытый...

Это сообщение отредактировал(а) alexsid1982 - 31.3.2008, 14:38
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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