Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
Заблокирован

Как вынести объявление класса в хедер?

20.10.2012, 16:15. Показов 6612. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некий класс с функц-членами.
набрал в Geany и вынес в отдельный файл cool.cpp
функции-члены этого класса
листинг cool.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cool::cool():a(10),b(5){}   
 
int cool::ga()
    {
    return a;
    }
    
int cool::gb()
    {
    return b;   
    }
    
void cool::sa(int _a)
    {
    a=_a;   
    }
    
void cool::sb(int _b)
    {
    b=_b;
    }

далее, открыл C++Builder 6 file\new\header
и сохранил в этой же папке с именем cool.h
объявление класса cool
(отображается как обычный текстовый файл)
листинг cool.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
class cool
    {
    public:
    cool();
    int ga();
    int gb();
    void sa(int _a);
    void sb(int _b);
    private:
    int a;
    int b;  
};

далее, опять открыл Builder с новым проектом
сохранил пустой проект в эту же папку
добавил
C++
1
2
#include "cool.h"
cool cool1;
листинг проекта в Builder

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <vcl.h>
#include "cool.h"
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
cool cool1;

выдает ошибку, не знаю что делать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2012, 16:15
Ответы с готовыми решениями:

Как вынести описание методов вложенного класса за пределы класса?
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?

Как вынести реализацию методов шаблонного класса в отдельный файл?
Как вынести реализацию методов шаблонного класса в отдельный файл, описание шаблонного класса в .h а реализацию хотелось бы сделать в...

Partial шаблонного класса (Весь основной код класса вынести в другой файл)
Здравствуйте, у меня есть главный класс, в котором содержится внутренний класс: public class DistributedArray&lt;T&gt; { //.... ...

11
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
20.10.2012, 16:42
В фаил cool.cpp добавьте заголовочный фаил
C++
1
#include "cool.h"
1
Заблокирован
20.10.2012, 16:51  [ТС]
Заработало, когда оба файла
в проекте стал подключать
C++
1
2
#include "cool.h"
#include "cool.cpp"
но это не правильно вроде...
вроде в самом проекте только
"cool.h" должен подключаться

Цитата Сообщение от Croessmah Посмотреть сообщение
В фаил cool.cpp добавьте заголовочный фаил
Не помогает, та же ошибка вылазит
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
20.10.2012, 16:56
а у Вас фаил cool.cpp в проект входит? А то может компилируете тольк unit и все. Кстати, что такое unit.h?
1
Заблокирован
20.10.2012, 17:07  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Кстати, что такое unit.h?
Я не знаю, он автоматом вроде появился

Цитата Сообщение от Croessmah Посмотреть сообщение
а у Вас фаил cool.cpp в проект входит
Нет, не входил, я думал cool.h сам какими-то
магическими комбинациями его в проект затолкает...

То есть, если надо подключить один класс к нескольким
формам в одном проекте алг следущий:
1. делим класс на *.h и *.cpp
2. в главной форме подкл *.h и *.cpp и создаем объект x класса;
3.во всех остальных формах где необходим объект x
подключаем *.h и объявляем extern * x;
правильно я понял?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
20.10.2012, 17:19
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
в главной форме подкл *.h и *.cpp и создаем объект x класса;
только *.h фаил подключается.

Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Нет, не входил, я думал cool.h сам какими-то
магическими комбинациями его в проект затолкает...
Включите фаил *.cpp в проект, иначе он не будет компилироваться
1
Заблокирован
20.10.2012, 17:29  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Включите фаил *.cpp в проект, иначе он не будет компилироваться
Все, врубился, спасибо
0
Заблокирован
20.10.2012, 17:49  [ТС]
Ну вот, чет все равно нифига не прет...

Добавил в файл cool.cpp
C++
1
#include "cool.h";
листинг cool.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "cool.h"
cool::cool():a(10),b(5){}
 
int cool::ga()
    {
    return a;
    }
 
int cool::gb()
    {
    return b;
    }
 
void cool::sa(int _a)
    {
    a=_a;
    }
 
void cool::sb(int _b)
    {
    b=_b;
    }

Включил файл cool.cpp в project1,
вылазит такая ошибка
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
20.10.2012, 18:02
cool.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef _COOL_H_
#define _COOL_H_
class cool
    {
    public:
    cool();
    int ga();
    int gb();
    void sa(int _a);
    void sb(int _b);
    private:
    int a;
    int b;  
};
#endif
1
Заблокирован
20.10.2012, 18:14  [ТС]
AllProject.rar - полносый архив, даже с временными файлами
CoolhAndCoolcpp.rar - файлы cool.h и cool.cpp

#ifndef _COOL_H_
если писать такую конструкцию он не видит класс

0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
20.10.2012, 18:19
уберите из cool.h
строчку
C++
1
#include "cool.cpp"
1
Заблокирован
20.10.2012, 18:34  [ТС]
Класс, работает!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2012, 18:34
Помогаю со студенческими работами здесь

Объявление объекта класса fstream в качестве статической компоненты другого класса
Доброго времени суток. Есть задание, в котором говорится &quot;...Перепишите программы из упражнений 4 и 6 таким образом, чтобы использовать...

Создать объявление класса и разработать программу-драйвер, которая продемонстрирует работу класса.
Класс Triangle (треугольник). Класс хранит Декартовы координаты трех углов треугольника. Конструктор принимает три группы координат. Должны...

Объявление объекта одного класса в описании другого класса
Здравствуйте. Почему при объявлении Student s в классе Teacher не возникает ошибки? Ведь такой объект уже существует. И почему при...

Объявление класса, создание экземпляров класса. Наследование классов
Вообщем начал делать программу:&quot;Создать класс Матрицы, обеспечивающего размещение матрицы произвольного размера с возможность изменения...

Объявление дружественного класса внутри класса
class A{ friend class B{ B(A &amp;a); } } Подскажите пожалуйста, такое возможно или нет, я хотел чтобы...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru