Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++ builder 
:(
    Опции темы
VerLinG
Дата 19.3.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



max определена через #define во все файлах. Но сначала она была определена как const int в cpp и тоже почему то не работала ((((( 

PM MAIL   Вверх
VerLinG
Дата 19.3.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



К слову, со struct все тожн работает,осталась только ошибка в передаче массива объектов

Это сообщение отредактировал(а) VerLinG - 19.3.2008, 20:51
PM MAIL   Вверх
xvr
Дата 20.3.2008, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(VerLinG @ 19.3.2008,  20:49)
К слову, со struct все тожн работает,осталась только ошибка в передаче массива объектов

А у тебя есть в каком-нибудь .cpp файле строка Temp objects[max];?
Во вторых - переопределять через #define (и тем более во всех .cpp файлах) max черевато - это стандартная функция из stl (и в VCL она тоже вроде есть), могут возникнуть весьма замысловатые ошибки  smile 

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


Новичок



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

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



 Temp objects[max]; есть в Unit1.cpp

А как лучше сделать max? Не подскажете?
PM MAIL   Вверх
pravila
Дата 20.3.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



max - как идентификатор по-моему уже занят. и если это правда, то следует использовать const int, назвав его как-то подругому, вроде MAX_SIZE. название из больших букв - стандарт для констант.
PM MAIL   Вверх
VerLinG
Дата 20.3.2008, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тяяяк...спасибо...Только вот что делать с Temp objects[max] ???
Он то должен быть виден у меня в двух файлах .сpp , причм в обоих идет сортировка этого массива
PM MAIL   Вверх
xvr
Дата 20.3.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(VerLinG @ 19.3.2008,  16:26)
C переменной прокатило, но...
Когда я стараюсь таким же образом передать структуру и массив объектов, возникает ошибка

в Unit1.h пишу 

Код


extern Temp objects[max];
extern struct a a1;



И выдается ошибка
[C++ Error] Unit2.cpp(16): E2451 Undefined symbol 'object'

Сравни
Цитата

extern Temp objects[max];

и
Цитата

[C++ Error] Unit2.cpp(16): E2451 Undefined symbol 'object'
Где то букву s потерял в конце идентификатора objects

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


Новичок



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

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



Да,это я уже исправил давно, суть не в этом.Я делаю так:

в Unit1.cpp
Temp object[max];

в Unit1.h
extern Temp object[max];

Сейчас он выдает три ошибки

Код

[C++ Error] Unit1.h(45): E2313 Constant expression required //указывает на extern Temp object[max]; 
[C++ Error] Unit1.cpp(19): E2356 Type mismatch in redeclaration of 'object'//указывает на Temp object[max]; 
[C++ Error] Unit1.h(45): E2344 Earlier declaration of 'object' //на extern Temp object[max];

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


Эксперт
****


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

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



Цитата(VerLinG @  20.3.2008,  21:09 Найти цитируемый пост)
[C++ Error] Unit1.h(45): E2313 Constant expression required //указывает на extern Temp object[max]; 

у тебя max не константа. Определи её через дефайн. Возможно могут и имена конфликтовать, попробуй переименовать max.
PM   Вверх
VerLinG
Дата 20.3.2008, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да не в этом вообще дело...
Вот допустим я эту переменную убираю совсем, т.е. пишу как
Temp object[100];
И все равно не передается массив...=((((

Только теперь уже появилось

[Linker Warning] Public symbol '_object' defined in both module C:\ËÀÁÀ_2\UNIT1.OBJ and C:\ËÀÁÀ_2\UNIT2.OBJ
[Linker Warning] Public symbol '_count' defined in both module C:\ËÀÁÀ_2\UNIT1.OBJ and C:\ËÀÁÀ_2\UNIT2.OBJ

И т.д.

Короче ,переменные не передаются =(
PM MAIL   Вверх
586
Дата 21.3.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Прям чудеса какие-то.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  test.rar 13,41 Kb
PM   Вверх
xvr
Дата 21.3.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(VerLinG @ 20.3.2008,  23:36)
Да не в этом вообще дело...
Вот допустим я эту переменную убираю совсем, т.е. пишу как
Temp object[100];
И все равно не передается массив...=((((

Только теперь уже появилось

[Linker Warning] Public symbol '_object' defined in both module C:\ËÀÁÀ_2\UNIT1.OBJ and C:\ËÀÁÀ_2\UNIT2.OBJ
[Linker Warning] Public symbol '_count' defined in both module C:\ËÀÁÀ_2\UNIT1.OBJ and C:\ËÀÁÀ_2\UNIT2.OBJ

И т.д.

Короче ,переменные не передаются =(

Главная ошибка ВСЕХ компиляторов в том, что они компилируют то, что програмист НАПИСАЛ, а не то, о чем он ДУМАЛ!
  •  extern перед Temp object[100]; (в .h файле) верни назад.
  •  Определи max как static const int max=100; в .h файле перед extern Temp object[max];
  •  Константу max рекомендуется назвать как-нибудь по другому (но об этом уже говорили)



PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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