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

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

Войти
Регистрация
Восстановить пароль
 
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
#1

struct and header files - C++

24.11.2010, 01:51. Просмотров 1058. Ответов 2
Метки нет (Все метки)

Куда записывать struct?
Если определяю его вклассе NMEAStructs.cpp в таком виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "NMEAStructs.h"
#include "Satellites.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
 
NMEAStructs::NMEAStructs() {
}
 
NMEAStructs::NMEAStructs(const NMEAStructs& orig) {
}
 
NMEAStructs::~NMEAStructs() {
}
 
struct GPGGAData
{
//public:
    int Hour;
    int Minute;
    int Second;
    double Latitude;
    NMEAStructs::Direction LatitudeHemispher;
    int NumberOfSatellitesInUse;
    double HDOP;
    double Altitude;
    int Count;
};
и обьявляю в header'e
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* 
 * File:   NMEAStructs.h
 * Author: andrey
 *
 * Created on 23 Ноябрь 2010 г., 20:41
 */
#include "Satellites.h"
#include <iostream>
#ifndef NMEASTRUCTS_H
#define    NMEASTRUCTS_H
 
class NMEAStructs {
public:
    NMEAStructs();
    NMEAStructs(const NMEAStructs& orig);
    virtual ~NMEAStructs();
    struct GPGSAData;
    struct GPGSVData;
    struct GPRMBData;
    struct GPRMCData;
    struct GPGGAData;
private:
 
};
 
#endif    /* NMEASTRUCTS_H */
то при компиляции выдает ошибку:NMEAParser.cpp:24:5: error: ‘GPGGAData’ in class ‘NMEAStructs’ does not name a type такого файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "NMEAParser.h" 
#include "NMEAStructs.h"
 
    const int NP_MAX_CMD_LEN=8;//max comm length (NMEA address)
    const int NP_MAX_DATA_LEN=256;//max data length
    const int NP_MAX_CHAN=36;//max number of channels
    const int NP_WAYPOINT_ID_LEN=32;//waypoint max length string
    NMEAStructs::NMEAState   nState;//Current state protocol parser is in
    unsigned char checksum;
    unsigned char receivedChecksum;
    int index;//Index used for command and data
    unsigned char *command;//NMEA command
    unsigned char *data;//Nmea data
    
    //number of NMEA commands received (processed or not processed)
    int CommandCount;
    NMEAStructs::GPGGAData GPGGA;//строка ошибки
А вот если определяю структуру в хедере, то все работает отлично, тоже самое происходит с enum'ом. Так правильно обьявлять(стоИт так обьявлять, читал что компиляция хедера занимает время изза того что каждый класс который юзает данный хедер, то он по новой компилируется?)
или есть более лучший(правильный) способ?(кроме использования классов. такая же трабла с enum)
писать все в одном файле не хочу так как есть другие классы которые юзают эти структуры и инамы, и не хочу, соответственно, беспорядка в коде.
П,С,
не ругайте сильно, только начал с++ изучать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 01:51     struct and header files
Посмотрите здесь:

Struct ; Files - C++
1. На основе записной книжки, содержащей сведения о людях (фамилия, год рождения, адрес - город, улица, номер дома, квартиры, место...

Header files и другие подключаемые файлы - C++
И так, господа, есть 3 файла : заголовочный (.h), файл реализации (.cpp) и управляющий (.cpp) Суть в том, что если я пропишу код файла...

struct (с++) - C++
Кто может написать полный синтаксис структуры. Чем отличается структура от класса ? Всем ответившим высказываю свою благодарность.

Struct{...} - C++
Драсьте мне нужна помощь. Написать программу ввода и вывода студентов группы и каждый из них характеризуется фамилией и номером...

struct - C++
Привествую ) Такой вопрос назрел ) Хочу создать переменную типа структуры: Всегда создавал так: my_struct var;

Struct{...} - C++
Задача № 1 (динамические структуры) Написать программу создания динамической структуры, заданной рисунком, с вводом элементов с...

Определение папки Program Files - C++
Подскажите, в Windows x64 2 папки Program Files, можно ли постоянно получать доступ к Program Files без приписки (x86). Из приложения 32...

Создать папку в Program Files - C++
Здравствуйте! if ( _mkdir(&quot;c:\\Program Files\\testtmp&quot;) == 0 ) std::cout &lt;&lt; &quot; Создан новый каталог testtmp &quot; &lt;&lt; '\n'; else...

Struct и библиотека - C++
Здравствуйте! Есть два файла: cpp и заголофочный файл .h Подскажите пожалуйста как передать массив из структур в эту библиотеку? ...

struct function - C++
Подскажите плз почему так заданная функция для структуры выдает ошибку (не может преобразовать unsigned short в myTime при присвоении...

Программа по Struct - C++
Создать Массив структур с именем Sotrudnik, содержащих следующие поля: 1. Табельный номер сотрудника. 2. ФИО сотрудника. 3....

typedef struct .... - C++
Здравствуейте. Обьясните пожалуйсто новичку что означает этот код. typedef struct { long num_servers; long data_size; char*...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OdNairy
7 / 7 / 1
Регистрация: 07.02.2010
Сообщений: 22
24.11.2010, 03:29     struct and header files #2
Пишите в отдельном файле, но для того, чтобы не "разбухал" файл, добавляйте guard-переменные. Т.е. в начале вашего файла пропишите следующие директивы препроцессора:
C++
1
2
3
4
5
6
#ifndef OrigFileName
#define OrigFileName
 
// тело файла
 
#endif
В таком случае после однократного включения файла, у вас не будет включаться ничего.
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
24.11.2010, 09:43  [ТС]     struct and header files #3
Цитата Сообщение от OdNairy Посмотреть сообщение
Пишите в отдельном файле, но для того, чтобы не "разбухал" файл, добавляйте guard-переменные. Т.е. в начале вашего файла пропишите следующие директивы препроцессора:
C++
1
2
3
4
#ifndef OrigFileName
 #define OrigFileName
 // тело файла
 #endif
В таком случае после однократного включения файла, у вас не будет включаться ничего.
А что это за файл? .cpp, .h??? что значит чтобы не разбухал?-ведь если я туда буду добовлять структуры и т.п. то он бужет разбухать или имееться ввиду что то другое?)
Ответ Создать тему
Опции темы

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