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

как вынести класс в отдельный файл?

20.10.2012, 09:34. Показов 17431. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сделал простенький класс
листинг класса cool

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
30
31
32
33
34
class cool
    {
    public:
    cool();
    int ga();
    int gb();
    void sa(int _a);
    void sb(int _b);
    private:
    int a;
    int b;  
    };
    
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
подключил в заголовке
#include "cool.cpp"
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include "cool.cpp"
using namespace std;
int main()
    {
    cool cool1;
    cout<<ga()<<" "<<gb()<<endl;    
    return 0;
    }
Почему-то выдает ошибку, в чем может быть проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2012, 09:34
Ответы с готовыми решениями:

Не получается вынести класс в отдельный файл
Добрый вечер. Не получается вынести код в отдельный файл. есть заголовочный файл, и есть файл с методами. При компиляции выдает ошибку...

Как вынести структуру в отдельный файл
Помогите, пожалуйста. Задали дополнительное задание: вынести структуру в отдельный файл. Я понятия не имею как это делать. #include...

Как вынести функцию с++ в отдельный файл
Как вынести функцию в отдельный файл как в PHP например: Например есть функция int function(){ int a,b,c; a=3; b=5; ...

5
Заблокирован
20.10.2012, 09:37  [ТС]
Тфу е-мае, пол часа компьютер пытал, только написал, сразу ошибку увидел
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
20.10.2012, 09:44
Я так понимаю cool.cpp еще и в проект включен? Есть несколько вариантов решения:
1. Убрать файл из проекта и компилировать в таком виде как сейчас (не совсем правильно)
2. Вынести объявление класса в хедер и подключить его вместо cool.cpp, т.е. вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// cool.h
// это нужно убрать из .cpp файла
class cool
    {
    public:
    cool();
    int ga();
    int gb();
    void sa(int _a);
    void sb(int _b);
    private:
    int a;
    int b;  
    };
и вместо
C++
1
#include "cool.cpp"
писать
C++
1
#include "cool.h"
3. убрать объявление класса из .cpp и написать его в main.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 <iostream>
using namespace std;
 
class cool
    {
    public:
    cool();
    int ga();
    int gb();
    void sa(int _a);
    void sb(int _b);
    private:
    int a;
    int b;  
    }
 
int main()
    {
    cool cool1;
    cout<<ga()<<" "<<gb()<<endl;    
    return 0;
    }
а да, еще методы нужно вызывать так
C++
1
cout<<cool1.ga()<<" "<<cool1.gb()<<endl;
1
2 / 2 / 0
Регистрация: 30.09.2012
Сообщений: 58
20.10.2012, 09:46
вместо
C++
1
cout<<ga()<<" "<<gb()<<endl;
пиши
C++
1
cout<<cool1.ga()<<" "<<cool1.gb()<<endl;
т.к. это функции-члены класса cool и к ним можно обращаться только через экземпляр класса коим является cool1

и совет: все переменные класса объявляй в разделе private, тем более что у тебя есть функции для получения и записи в эту пременную
1
Заблокирован
20.10.2012, 14:40  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
cool.cpp еще и в проект включен?
Спасибо наиогромнейшее, слышал кстате такое, но тк решал только небольшие примеры то не нужно было... пропускал мимо ушей.... или глаз.... А сечас как раз нужно...
Цитата Сообщение от Михаил Свинцов Посмотреть сообщение
к ним можно обращаться только через экземпляр класса
Да я понял уже. Обидно, что вот так мучаешь, мучаешь комп и не понимаешь в чем дело, только на форум выкинешь и как озаряет... Не первый раз уже...
Цитата Сообщение от Михаил Свинцов Посмотреть сообщение
и совет: все переменные класса объявляй в разделе private
Они у меня и так в привате сидят

Добавлено через 4 часа 47 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
2. Вынести объявление класса в хедер
и подключить его вместо cool.cpp, т.е. вот так
Чет так не получается... как я понял теперь имеется
три файла вместо двух
1.main
листинг main
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include "cool.h"
using namespace std;
int main()
    {
    cool cool1;
    cout<<cool1.ga()<<" "<<cool1.gb()<<endl;    
    return 0;
    }

2. хедер, я не знал как его сотворить поэтому сделал наобум,
т.е. просто сохранил объявление в cool.h
листинг хедера

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "cool.cpp"
class cool
    {
    public:
    cool();
    int ga();
    int gb();
    void sa(int _a);
    void sb(int _b);
    private:
    int a;
    int b;  
};
(cool.h)
3.файл с функциями-членами класса cool
листинг 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;
    }

Но не пашет.... почему-то...

Помогите пож, мне кажется спасение в этом,
а то замучался данные между формами передовать
с десяток переменных extern можно всего одним
классом заменить.....
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
20.10.2012, 16:48
в cool.h вот эта строка не нужна
C++
1
#include "cool.cpp"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2012, 16:48
Помогаю со студенческими работами здесь

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

Класс в отдельный файл
Подскажите, как сделать...вот есть у мня класс, как его сохранить, чтоб можно было использовать в других программах...и непосредственно,...

Раздельная компиляция: вынести вектор в отдельный модуль
Всем привет! Лазил я в гугле и наткнулся на тему по раздельной компиляции. Там был пример, в отдельный модуль, выносились глобальные...

Нужно вынести часть программы в отдельный модуль
Помогите вынести 19-36 строки в отдельный модуль, чтобы можно было потом как заголовочный файл .h его подключить #define...

Вынести код создания списка в отдельный модуль
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct A { int key; }; class List { public:


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru