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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
AnreyKazakov
Заблокирован
#1

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

20.10.2012, 09:34. Просмотров 2306. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как вынести класс в отдельный файл? (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
AnreyKazakov
Заблокирован
20.10.2012, 09:37  [ТС] #2
Тфу е-мае, пол часа компьютер пытал, только написал, сразу ошибку увидел
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 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
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
20.10.2012, 16:48 #6
в cool.h вот эта строка не нужна
C++
1
#include "cool.cpp"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2012, 16:48
Привет! Вот еще темы с ответами:

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

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

Не собирается проект, если main вынести в отдельный модуль - C++
list.h #ifndef LISTCLASS_H #define LISTCLASS_H class list{ private: int myValue; list * myNext; public:

Вынести в отдельный список все отрицательные элементы исходного - C++
Здравствуйте. Помогите пожалуйста решить задачу. Набросок есть, но программа не работает. Предположим, что уже построен и задан...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.10.2012, 16:48
Ответ Создать тему
Опции темы

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