Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
#1

Описание структуры - C++

20.11.2012, 16:35. Просмотров 646. Ответов 8
Метки нет (Все метки)

Заранее извиняюсь, если кому-то мой вопрос покажется слишком уж элементарным и не стоящим внимания, но я зашел уже в тупик Итак, перехожу к сути.

В программе была описана структура:

C++
1
2
3
4
5
6
7
typedef struct point_town
{
    float x, y;
    point_town(float _x = 0.0f, float _y = 0.0f) { x = _x, y = _y; }
    bool operator == (const point_town& p){return (this->x == p.x && this->y == p.y);}
    bool operator != (const point_town& p){return !((*this) == p);}
} POINT_TOWN;
Описывал не я - наверное, поэтому она и описана правильно
Теперь я далее пишу:

C++
1
2
3
4
5
6
typedef struct town_square
{
    point_town min,max;
    char* file_name[32];
    town_square(float _min=0.0f, float _max=0.0f) { min.x=_min.x; min.y=_min.y; max.x=_max.x; max.y=_max.y; }
} TOWN_SQUARE;
и получаю ругательство "выражение слева от ".x" должно представлять класс, структуру или объединение". Если я правильно понимаю, то компилятор отругался на "min", который стоит перед ".x" Но, извините, что же собой представляет "min" как не структуру?!

Растолкуйте плиз, что я написал не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2012, 16:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Описание структуры (C++):

Описание структуры
Помогите сделать лабу=) Описать структуру с именем tsZnak, содержащую...

Описание структуры
Здравствуйте. Помогите решить задачу. Заранее спасибо. Описать структуру с...

Описание структуры NOTE
Описать структуру с именем NOTE, содержанию следующие поля: 1) фамилия, имя;...

Описание структуры ORDER
Может помочь с ошибкой и проверить правильно ли все работает)) Описать...

Описание структуры TRAIN
Задача: описать структуру с именем TRAIN, содержащую след. поля: 1)название...

Важно: Описание структуры
помогите плиз в программирование нечё не шарю надо написать прогу на лабу ...

8
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 16:42 #2
У Вас параметры типа float
C++
1
town_square(float _min=0.0f, float _max=0.0f)
А вы обращаетесь к _min и к _max как к объектам типа point_town
1
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 16:48  [ТС] #3
Ой... Действительно, виноват, протупил

И еще: как вы думаете, стоит ли мне там же, в конструкторе, проинициализировать пустой строкой

C++
1
char* file_name[32];
или лучше не трогать? А если проинициализировать, то как правильно написать?
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 16:55 #4
C++
1
char* file_name[32];
Это Вы хотели создать массив из 32 символов или массив из 32 указателей на char?
1
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 16:57  [ТС] #5
Массив из 32 символов. Ну, то есть, строку из не более чем 32 символа.
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 17:00 #6
C++
1
char file_name[32];
Обнулить можно, например так:
C++
1
memset(file_name,0,sizeof(file_name)*sizeof(file_name[0]));
1
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 17:07  [ТС] #7
Ага, т.е. указатель здесь не нужен, это просто у меня сработал сложившийся стереотип, что С++ очень любит указатели на все, что шевелится.

Все понятно, спасибо Вам большое!
0
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,926
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 17:10 #8
C++
1
char*
Это указатель на char.
поэтому запись
C++
1
char * arr[100]
значит массив из 100 указателей на char
1
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 21:30  [ТС] #9
Да, спасибо, теперь я это понял. Эк все непросто...

Добавлено через 38 минут
Извините, что снова беспокою. Теперь не могу прочитать вышеозначенную структуру из файла

C++
1
2
3
4
5
6
    char buffer[sizeof(town_square)];
    while (fgets(buffer,sizeof(town_square),t)) {
        TOWN_SQUARE town();
        sscanf(buffer,'%f#%f#%f#%f#%s',&town.min.x,&town.min.y,&town.max.x,&town.max.y,&town.file_name);
    }
    fclose(t);
Может, для чтения типизированных файлов есть что-то более простое?

Добавлено через 3 часа 34 минуты
Вот так сделал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    FILE *t = fopen("squares.db","r");                            
    if (!t) {
        char log[1024];
        sprintf(log, "Error opening squares.db", argv[1]);        
        SetReady(log);      
        return 1;
    }
    town_square *town;                                            
    vector<TOWN_SQUARE> squares;                                  
    while (fread(town,sizeof(town_square),1,t)==1) {
        squares.push_back(*town);                                 
    }
    fclose(t);
0
20.11.2012, 21:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 21:30
Привет! Вот еще темы с решениями:

Описание структуры с полем массив
Здравствуйте! Было необходимо описать структуру с именем KLASS, содержащую...

Описание структуры, которая представляет монастырь
Ведомость спортивних состязаний Фамилия участника Код команды Количество...

Где пишется описание для выходного файла .exe (например описание процесса)
Консольный проект, скомпилировали, получили exe. Жмем правой кнопкой на...

Помещение структуры в вектор, удаление структуры, изменение элементов структуры
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru