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

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

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

struct and header files - C++

24.11.2010, 01:51. Просмотров 1092. Ответов 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)
писать все в одном файле не хочу так как есть другие классы которые юзают эти структуры и инамы, и не хочу, соответственно, беспорядка в коде.
П,С,
не ругайте сильно, только начал с++ изучать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 01:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос struct and header files (C++):

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

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

binary files - C++
f : file of integer; как тоже самое сделать в Си++??? то есть открыть файл в виде чисел??? по идеи так...но что дальше ifstream...

Struct - C++
У мя есть структура: указатель на предыдущий, следующий и значение... Ввод/вывод работает, а вот добавление после определённого значения...

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

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

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

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

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

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

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


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

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

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