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

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

Войти
Регистрация
Восстановить пароль
 
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
#1

Класс в модуле - C++

12.02.2011, 21:44. Просмотров 470. Ответов 7
Метки нет (Все метки)

как записать класс в модуль?(ну чтобы его из модуля вызывать)
например такой
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
#include <iostream>
 
class Myclass
{
    private:
      int elem1,elem2,elem3;
    public:
     Myclass(int x,int y,int z)
     {
        elem1=x;
        elem2=y;
        elem3=z;
     }
     int res1()
     {
        return elem1*elem2;
     }
     void Final()
     {
        cout<<"Result"<<" "<<res1()*elem3<<endl;
     }
};
    
int main()
{
  Myclass d(2,5,6);
  d.Final();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2011, 21:44     Класс в модуле
Посмотрите здесь:

feof(file) в модуле - C++
Функция main вызывает другую функцию, расположенную в отдельном модуле. Когда я пытаюсь в этой функции проверить на конец файла...

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

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

Как создать переменную в модуле - C++
Хотел создать глобальную переменную в отдельном модуле, например так (файл stdafx.h):int a=10; Всё нормально скомпилировалось, но когда в...

Неправильно идёт подсчёт в модуле математики - C++
Подскажите пожалуйста... В программе у меня, когда я ввожу например число 10, у меня в синусе выводится (-0.544), однако, на самом деле,...

Где в модуле объявить динамический массив? - C++
Здравствуйте. Объясните пожалуйста, как объявляется массив в классе. Допустим мне нужен массив бесконечной геометрической прогрессии....

Как реализовать обнуляющий конструктор в модуле класса? - C++
Нужно реализовать класс в виде модуля. Класс Houses, содержит данные о домах, расположенных на одной улице. Кол-во жителей(tenants) и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.02.2011, 22:14     Класс в модуле #2
В файле Myclass.h объявляете класс, в файле Myclass.cpp подключаете файл Myclass.h и описываете класс, в файле main.cpp подключаете Myclass.h и используете класс. Имена файлов, естественно, не принципиальны.
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
12.02.2011, 22:30  [ТС]     Класс в модуле #3
сделал так.

myclass.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "myclass.h"
#include <iostream>
 
class Myclass
{
    private:
      int elem1,elem2,elem3;
    public:
     Myclass(int x,int y,int z)
     {
        elem1=x;
        elem2=y;
        elem3=z;
     }
     int res1()
     {
        return elem1*elem2;
     }
     void Final()
     {
        cout<<"Result"<<" "<<res1()*elem3<<endl;
     }
};
myclass.h
C++
1
class Myclass;
proga.cpp
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include "myclass.h"
 
int main()
{
    Myclass d(3,4,5);
    d.Final();
}
Но выдает ошибку
variable `class Myclass d' has initializer but incomplete type
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
12.02.2011, 22:48     Класс в модуле #4
Скорее всего надо так:
myclass.h
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
 
class Myclass
{
    private:
      int elem1,elem2,elem3;
    public:
     Myclass(int x,int y,int z);
     int res1();
     void Final();
};
myclass.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include "myclass.h"
 
using namespace std;
 
Mayclass::Myclass(int x,int y,int z)
{
        elem1=x;
        elem2=y;
        elem3=z;
}
 
int Myclass::res1()
{
        return elem1*elem2;
}
 
void Mayclas::Final()
{
        cout<<"Result"<<" "<<res1()*elem3<<endl;
}
main.cpp
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include "myclass.h"
 
int main()
{
        Myclass d(3,4,5);
        d.Final();
}
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
12.02.2011, 23:22  [ТС]     Класс в модуле #5
теперь выдает 'undefined reference to Myclass::Myclass(int,int,int)'
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
12.02.2011, 23:41     Класс в модуле #6
Artishok, У меня все норм
Миниатюры
Класс в модуле  
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
12.02.2011, 23:42     Класс в модуле #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
//myclass.h
#pragma once
 
class Myclass
{
private:
    int elem1,elem2,elem3;
public:
    Myclass(int x,int y,int z);
    int res1();
    void Final();
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//myclass.cpp
#include <iostream>
#include "myclass.h"
 
using namespace std;
 
Myclass::Myclass(int x,int y,int z)
{
    elem1=x;
    elem2=y;
    elem3=z;
}
 
int Myclass::res1()
{
    return elem1*elem2;
}
 
void Myclass::Final()
{
    cout<<"Result"<<" "<<res1()*elem3<<endl;
}
C++
1
2
3
4
5
6
7
8
9
10
//main.cpp
#include <iostream>
#include "myclass.h"
 
int main(){
    Myclass d(3,4,5);
    d.Final();
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2011, 11:32     Класс в модуле
Еще ссылки по теме:

Реализация ссылки на массив чисел в вызываемом модуле - C++
К примеру, если в main() создан динамический массив чисел. Он передаётся в качестве входного параметра функции, которая вызывается из...

Оформить в виде макроса и разместить их в отдельном модуле - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) обнулить все отрицательные элементы массива расположенные...

Как определить размер массива объявленного в другом модуле? - C++
Возникла необходимость разбить программу на модули, и появилась проблема: Module1.cpp: ... int mas = {1, 2, 3, 4, 5}; ... ...

LNK 2005, переменные уже определены в другом модуле - C++
Здравия желаю! Проблема в том, что 2 эти статические переменные определяются еще раз. Всего 2 .cpp и в каждый добавлен .h с этим классом....

как сделать объект класса доступным в каждом модуле (cpp файле) ? - C++
для встренных типов это делается с помощью extern.. но когда добавляю туда объект своего класса, то вылазит куча ошибок //файл...


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

Или воспользуйтесь поиском по форуму:
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.02.2011, 11:32     Класс в модуле #8
Artishok, у вас компилятор не поддерживает раздельную компиляцию, т.е. нельзя разделять обьявления методов класса и их реализацию по разным файлам.
Yandex
Объявления
13.02.2011, 11:32     Класс в модуле
Ответ Создать тему
Опции темы

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