Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать из класса .h файл? 
:(
    Опции темы
Guest
Дата 20.12.2005, 20:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите с проблемой.

Есть класс - blocknot, нужно сделать файл blocknot.h чтобы его можно было подключать #include.

И еще вопрос: как можно сделать так, чтобы введенные пользователем данные в одном сеансе где нибудь сохранялись, и в следующем сеансе их можно было бы просмотреть и изменить?
  Вверх
_hunter
Дата 20.12.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



нихт не понял.
обычно при написании классов пишут и .h-ники под них. у тебя не так?
что это за класс? чем он отличается от обычного ( нормального? ) класса?

можно. только неплохо бы написать что ты понимаеш под сеансом


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
kometa_triatlon
Дата 20.12.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 384
Регистрация: 7.1.2005
Где: Киев

Репутация: 2
Всего: 6



Сеанс это наверное запуск проги просто.
Ну запиши эти данные в файл, если это настройки - то в реестр

И мой вопрос гостю: обычно если "есть класс", это значит, что есть заголовочный файл, в котором определен интерфейс и файл реализации. Как это так, что у тебя есть класс, но нет .h файла??


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
Guest
Дата 20.12.2005, 20:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ну класс у меня тривиальный, пишу в учебных целях.

По видимому своим плохим знанием языка заинтересовал опытных программистов. На самом деле задача такая:

Класс (если его можно так назвать) :
Код

class bloknot{
int day;       // den proizvedenia zapisi
int srok;      // srochnost' dela
char text[10]; // zametka
public:
void store   (int d,int sr,char *zam);
void show ();
};

void bloknot::store(int d,int sr,char *zam)
{
day=d;
srok=sr;
strcpy(text,zam);
}

void bloknot::show()
{
cout << "\n\n\n  den'.    srochnost'.   subject. \n  " << day << "            "
<< srok << "           " << text;
}


Чтобы лучше смотрелось хочу сделать из него файл .h и подключить его к основной программе.

А обычно делают сложнее?

-----
Цитата
"Сеанс это наверное запуск проги просто.
Ну запиши эти данные в файл, если это настройки - то в реестр


То есть надо чтобы записать в файл, а при следующем включении их извлечь.
А можно поподробнее.. файл с каким расширением? где можно почитать про команды записи и чтения из файла?
  Вверх
Partizan
Дата 20.12.2005, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



дык запихни описание класса и реализацию функций в какойнить *.h файл smile
ты вообще в курсе чем #include занимается? smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
DeadSoul
Дата 20.12.2005, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Partizan @ 20.12.2005, 22:00)
дык запихни описание класса и реализацию функций в какойнить *.h файл
ты вообще в курсе чем #include занимается? 

И зачем пихать реализацую функций в h-файл?

Это
Код

class bloknot{
int day;       // den proizvedenia zapisi
int srok;      // srochnost' dela
char text[10]; // zametka
public:
void store   (int d,int sr,char *zam);
void show ();
};

в h-файл. Все остальное в cpp


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
medos
Дата 20.12.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 20.12.2005

Репутация: нет
Всего: нет



А каким образом осуществлять взаимосвязь этих файлов. Я их поместил в одну папку, разбил как указали но при компиляции мне выдают, что не могут открыть подключаемый метод.

В файле .h надо писать какие-либо дополнительные команды, какой-нибудь #define?
PM MAIL   Вверх
DeadSoul
Дата 20.12.2005, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



medos в принципе надо сделать "защитные хедеры"
Код

// Это твой h-файл
#ifndef MYLABA1_BLOCKNOT_HEADER_FILE
// MYLABA1_BLOCKNOT_HEADER_FILE - данная "строка" должна быть УНИКАЛЬНА для ВСЕХ твоих h-файлов во ВСЕХ проектах
// Стандартно это имя зависит от названия проекта и названия h-файла
#define MYLABA1_BLOCKNOT_HEADER_FILE

// тута твой класс

#endif// #ifndef MYLABA1_BLOCKNOT_HEADER_FILE

Но дело не в этом. Ты сделал
Код

#include "blocknot.h"// НУЖНО ТАК
// или
#include <blocknot.h>




--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
blackofe
Дата 21.12.2005, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 29.11.2005

Репутация: 4
Всего: 4



Цитата(DeadSoul @ 20.12.2005, 23:30)
medos в принципе надо сделать "защитные хедеры"

в дополнение. в vc++ можно использовать

Код

#pragma once 

Добавлено @ 00:09
Цитата(medos @ 20.12.2005, 22:49)
А каким образом осуществлять взаимосвязь этих файлов. Я их поместил в одну папку, разбил как указали но при компиляции мне выдают, что не могут открыть подключаемый метод.

В файле .h надо писать какие-либо дополнительные команды, какой-нибудь #define?

как сказал DeadSoul, тебе надо в cpp-файле указать компилятору, где искать описание твоего класса, т.е. где искать заголовочный .h-файл. для этого в .cpp-файле вверху пишешь:

Код

#include "blocknot.h"


Это сообщение отредактировал(а) blackofe - 21.12.2005, 00:06
PM MAIL   Вверх
DeadSoul
Дата 21.12.2005, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(blackofe @ 21.12.2005, 00:06)
Цитата (DeadSoul @ 20.12.2005, 23:30)
medos в принципе надо сделать "защитные хедеры"
в дополнение. в vc++ можно использовать
Код

#pragma once 


Сознательно опустил. Т.к. это совершенно не переносимо, а компилятор не указан.



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
blackofe
Дата 21.12.2005, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 29.11.2005

Репутация: 4
Всего: 4



Цитата(DeadSoul @ 21.12.2005, 00:26)
Сознательно опустил. Т.к. это совершенно не переносимо, а компилятор не указан.

согласен. но жаль. очень удобно. smile

читал на форуме буста, что там тоже предлагали ввести нечто подобное.

Это сообщение отредактировал(а) blackofe - 21.12.2005, 18:41
PM MAIL   Вверх
medos
Дата 22.12.2005, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 20.12.2005

Репутация: нет
Всего: нет



сделал так:

Код

#ifndef class
#define class

class bloknot
         {        // здесь выдает declaration syntax error
int day;       // den proizvedenia zapisi
int srok;      // srochnost' dela
char text[10]; // zametka
public:
void store   (int d,int sr,char *zam);
void show ();
          };

#endif


А файл .cpp по-прежнему не может подключить класс - блокнот. Что не так???

Ps. создался файл .bak, копия .h; зачем он нужен?
PM MAIL   Вверх
DeadSoul
Дата 22.12.2005, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(medos @ 22.12.2005, 22:18)
Ps. создался файл .bak, копия .h; зачем он нужен?

У тебя Borland 3.1? Или подобный динозавр? имя.bak - копия твоего файла, созданная прямо ПЕРЕД твоим сохранением.
Забей на этот файл.

В cpp-файле строка
Код

#include "имя файла.h"

есть?


Цитата(medos @ 22.12.2005, 22:18)
#ifndef class

ТАК НИКОГДА НЕ ДЕЛАЙ! class - зарезервированное слово языка С++. Защитные хедеры специально пишутся такими большими и некрасивыми как у меня, чтобы случайно не использовать такой идентификатор


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
medos
Дата 22.12.2005, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 20.12.2005

Репутация: нет
Всего: нет



Да, у меня борланд.3.1

#include "имя файла.h" - есть.

А то что при компиляции bloknot.h выдает ошибку, ничего?

****

sorry, ступил, написал "bloknot", вместо "bloknot.h".

Однако для этих вещей :

Код

void bloknot::store(int d,int sr,char *zam)    
{    
day=d;    
srok=sr;    
strcpy(text,zam);    
}    
void bloknot::show()    
{    
cout << "\n\n\n  den'.    srochnost'.   subject. \n  " << day << "            "    
<< srok << "           " << text;    
}

пишет body has already been defined for function '...'



Это сообщение отредактировал(а) medos - 22.12.2005, 22:36
PM MAIL   Вверх
blackofe
Дата 22.12.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 29.11.2005

Репутация: 4
Всего: 4



medos
сделай два файла. и распихай в них свой код таким образом:

bloknot.h:

Код

class bloknot{
    int day;       // den proizvedenia zapisi
    int srok;      // srochnost' dela
    char text[10]; // zametka
public:
    void store   (int d,int sr,char *zam);
    void show ();
};


bloknot.cpp:

Код

#include "bloknot.h"

void bloknot::store(int d,int sr,char *zam)
{
    day=d;
    srok=sr;
    strcpy(text,zam);
}

void bloknot::show()
{
    cout << "\n\n\n  den'.    srochnost'.   subject. \n  " << day << "            " << srok << "           " << text;
}

int main()
{
    bloknot b;
    b.store(1, 2, "bla-bla");
    b.show();
}


если у тебя программа состоит из нескольких модулей, обращающихся друг к другу, то хорошо, конечно, развязать .h-файл, как тут советовали.

bloknot.h:

Код

#ifndef __BLOKNOT_H_
#define __BLOKNOT_H_

class bloknot{
    int day;       // den proizvedenia zapisi
    int srok;      // srochnost' dela
    char text[10]; // zametka
public:
    void store   (int d,int sr,char *zam);
    void show ();
};

#endif // __BLOKNOT_H_



Это сообщение отредактировал(а) blackofe - 22.12.2005, 22:59
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.