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

struct and header files - C++

Восстановить пароль Регистрация
 
lifestyle
Mobile Developer
 Аватар для lifestyle
230 / 226 / 4
Регистрация: 10.05.2009
Сообщений: 917
24.11.2010, 01:51     struct and header files #1
Куда записывать 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
Посмотрите здесь:

[c++]struct C++
C++ Struct{...}
Struct ; Files C++
Struct{...} C++
C++ struct (с++)
C++ struct
C++ Header files и другие подключаемые файлы
Определение папки Program Files C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OdNairy
 Аватар для 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
 Аватар для lifestyle
230 / 226 / 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??? что значит чтобы не разбухал?-ведь если я туда буду добовлять структуры и т.п. то он бужет разбухать или имееться ввиду что то другое?)
Yandex
Объявления
24.11.2010, 09:43     struct and header files
Ответ Создать тему
Опции темы

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