Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
#1

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

20.11.2012, 16:35. Просмотров 610. Ответов 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" как не структуру?!

Растолкуйте плиз, что я написал не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2012, 16:35     Описание структуры
Посмотрите здесь:

Описание структуры - C++
Помогите сделать лабу=) Описать структуру с именем tsZnak, содержащую следующие поля: *Фамилия, имя *Знак зодиака *дата...

Описание структуры - C++
Здравствуйте. Помогите решить задачу. Заранее спасибо. Описать структуру с именем «Автомобиль», содержащую следующие поля: а) марка; ...

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

Описание структуры NOTE - C++
Описать структуру с именем NOTE, содержанию следующие поля: 1) фамилия, имя; 2) номер телефона; 3) дата рождения (массив из трех...

Описание структуры ORDER - C++
Может помочь с ошибкой и проверить правильно ли все работает)) Описать структуру с именем ORDE: Записи должны быть размещены в алфавитном...

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

Описание структуры с полем массив - C++
Здравствуйте! Было необходимо описать структуру с именем KLASS, содержащую следующие поля: 1) фамилия,имя 2)день рождения(массив из...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 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
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 16:48  [ТС]     Описание структуры #3
Ой... Действительно, виноват, протупил

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

C++
1
char* file_name[32];
или лучше не трогать? А если проинициализировать, то как правильно написать?
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 16:55     Описание структуры #4
C++
1
char* file_name[32];
Это Вы хотели создать массив из 32 символов или массив из 32 указателей на char?
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 16:57  [ТС]     Описание структуры #5
Массив из 32 символов. Ну, то есть, строку из не более чем 32 символа.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 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]));
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 17:07  [ТС]     Описание структуры #7
Ага, т.е. указатель здесь не нужен, это просто у меня сработал сложившийся стереотип, что С++ очень любит указатели на все, что шевелится.

Все понятно, спасибо Вам большое!
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
20.11.2012, 17:10     Описание структуры #8
C++
1
char*
Это указатель на char.
поэтому запись
C++
1
char * arr[100]
значит массив из 100 указателей на char
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 21:30     Описание структуры
Еще ссылки по теме:

Описание структуры, которая представляет монастырь - C++
Ведомость спортивних состязаний Фамилия участника Код команды Количество балов Место в итоге Баландин С ...

Если описание не является определением, напишите для него определение. Если описание является определением, напишите для него описание - C++
Начал изучать программирование на С++, делаю упражнения из книги Мюррэй Хилл, Нью Джерси Бьярн Страустрап "Язык C++" Программу "Hello,...

описание массивов - C++
Подскажите, есть 2 cpp файла void Raschet(int **const iMatrix, double *n, const int iNum_x, const int iNum_y) { int s; ...

Описание функций - C++
Как делать описания для функций, которые появляются при наведении курсором на название функции или при её выборе из всплывающего меню? И...

Описание функции - C++
Помогите написать код функции!? Задача: Программа. Описать функцию f (s, n, x), определяющую, какой символ чаще других встречается в...


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

Или воспользуйтесь поиском по форуму:
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);
Yandex
Объявления
20.11.2012, 21:30     Описание структуры
Ответ Создать тему
Опции темы

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