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

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

Восстановить пароль Регистрация
 
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
12.02.2011, 21:44     Класс в модуле #1
как записать класс в модуль?(ну чтобы его из модуля вызывать)
например такой
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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.02.2011, 22:14     Класс в модуле #2
В файле Myclass.h объявляете класс, в файле Myclass.cpp подключаете файл Myclass.h и описываете класс, в файле main.cpp подключаете Myclass.h и используете класс. Имена файлов, естественно, не принципиальны.
Artishok
ЧакЭ одобряЭ
 Аватар для 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
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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
ЧакЭ одобряЭ
 Аватар для 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
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
12.02.2011, 23:41     Класс в модуле #6
Artishok, У меня все норм
Миниатюры
Класс в модуле  
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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++ Оформить в виде макроса и разместить их в отдельном модуле
C++ Реализация ссылки на массив чисел в вызываемом модуле
C++ Где в модуле объявить динамический массив?

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

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

Текущее время: 10:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru