Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/17: Рейтинг темы: голосов - 17, средняя оценка - 4.71
AnreyKazakov
Заблокирован
1

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

20.10.2012, 09:34. Просмотров 3255. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2012, 09:34
Ответы с готовыми решениями:

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

Как вынести функцию с++ в отдельный файл
Как вынести функцию в отдельный файл как в PHP например: Например есть...

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

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

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

5
AnreyKazakov
Заблокирован
20.10.2012, 09:37  [ТС] 2
Тфу е-мае, пол часа компьютер пытал, только написал, сразу ошибку увидел
0
Kastaneda
Jesus loves me
Эксперт С++
4943 / 3020 / 346
Регистрация: 12.12.2009
Сообщений: 7,622
Записей в блоге: 2
Завершенные тесты: 1
20.10.2012, 09:44 3
Я так понимаю 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 4
вместо
C++
1
cout<<ga()<<" "<<gb()<<endl;
пиши
C++
1
cout<<cool1.ga()<<" "<<cool1.gb()<<endl;
т.к. это функции-члены класса cool и к ним можно обращаться только через экземпляр класса коим является cool1

и совет: все переменные класса объявляй в разделе private, тем более что у тебя есть функции для получения и записи в эту пременную
1
AnreyKazakov
Заблокирован
20.10.2012, 14:40  [ТС] 5
Цитата Сообщение от 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
Jesus loves me
Эксперт С++
4943 / 3020 / 346
Регистрация: 12.12.2009
Сообщений: 7,622
Записей в блоге: 2
Завершенные тесты: 1
20.10.2012, 16:48 6
в cool.h вот эта строка не нужна
C++
1
#include "cool.cpp"
0
20.10.2012, 16:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2012, 16:48

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

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

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


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

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

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