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

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

Восстановить пароль Регистрация
 
deGeneral
5 / 5 / 1
Регистрация: 20.11.2012
Сообщений: 47
20.11.2012, 16:35     Описание структуры #1
Заранее извиняюсь, если кому-то мой вопрос покажется слишком уж элементарным и не стоящим внимания, но я зашел уже в тупик Итак, перехожу к сути.

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

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     Описание структуры
Посмотрите здесь:

Описание структуры TRAIN C++
Описание структуры C++
Важно: Описание структуры C++
описание структуры ZNAK C++
C++ Описание структуры с полем массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 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++
Описание структуры ORDER C++
C++ Описание структуры NOTE

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

Или воспользуйтесь поиском по форуму:
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     Описание структуры
Ответ Создать тему
Опции темы

Текущее время: 08:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru