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

Как создать свой класс и подключить его в main?

03.11.2015, 01:35. Показов 34263. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я новичок,хотел поинтересоваться,когда люди пишут программу,они сначала главную функцию main пишут,а потом пишут классы и подключают к main через #include? Просто создавал простенький класс в Visual studio 2015 по книжке,который просто на консоль выводит,и пошли проблемы,то написано что мой класс.h не найден,или то что нужны явные указатели какие-то.Просто интересно,как это правильно делать.Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.11.2015, 01:35
Ответы с готовыми решениями:

Как подключить свой класс?
Есть основной файл с тремя кнопками который выполняет функции при нажатии. Эти функции описаны в отдельном классе .Как его подключить в...

Как к проекту подключить свой класс
Здравствуйте. Объясните мне не учёному, как в Windows Forms к проекту подключить свой класс. Уже столько пересмотрел, а вменяемого не...

Как подключить свой класс к своему проекту WindowsFormsApplication?
Здравствуйте, уважаемые форумчане. Проблема такая. Сконструирована форма с кнопками и прочими элементами. Она нужна только для того,...

23
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
03.11.2015, 04:04
andrue_selen, Если не секрет, какую литературу используете? Обычно в книгах для начинающих классы даются после прохождения базисных тем, в которых идёт толкование тех самых
Цитата Сообщение от andrue_selen Посмотреть сообщение
явные указатели какие-то.
Если вам так интересно, то вот реализация простейшего класса:
Файл Source.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include "Man.h"
 
int main() {
    Man man = Man("No name", 0, 0.0);
    man.Input_data();
    man.Show_data();
    system("Pause");
    return 0;
}
Файл Man.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
24
25
26
#include <iostream>
#include <string>
#include "Man.h"
 
Man::Man(std::string _Name, int _age, double _height) {
    Name = _Name;
    age = _age;
    height = _height;
}
 
void Man::Input_data() {
    std::cout << "Enter name: ";
    std::cin >> Name;
    std::cout << "Enter age of man: ";
    std::cin >> age;
    std::cout << "Enter height: ";
    std::cin >> height;
}
 
void Man::Show_data() {
    std::cout
        << "\nName: " << Name
        << "\nAge: " << age
        << "\nHeight: " << height
        << "\n";
}
Файл Man.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#ifndef MAN_H_
#define MAN_H_
#include <string>
 
class Man {
// Скрытые поля
private:
    std::string Name;
    int age;
    double height;
// Здесь располагаются функции-методы работы с данными
public:
    Man(std::string _Name, int _age, double _height);
    ~Man() {}
    void Input_data();
    void Show_data();
};
 
#endif
3
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.11.2015, 10:36
Цитата Сообщение от Bespridelschic Посмотреть сообщение
Скрытые поля
Нет такого. Есть данные-члены (data members), которые некоторые называют также "полями класса" (class fields).
Цитата Сообщение от Bespridelschic Посмотреть сообщение
функции-методы
Нет такого. Есть функции-члены (function members), которые некоторые называют также "методами класса" (class methods).

Соответственно, в зависимости от доступа, члены класса могут быть закрытыми (private members) или открытыми (public members).
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
03.11.2015, 11:47
Цитата Сообщение от gru74ik Посмотреть сообщение
закрытыми (private members) или открытыми (public members).
Или защищенными (protected)
Цитата Сообщение от Bespridelschic Посмотреть сообщение
C++
1
2
3
#pragma once 
#ifndef MAN_H_ 
#define MAN_H_
А вдруг?
5
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.11.2015, 11:49
Цитата Сообщение от Tulosba Посмотреть сообщение
Или защищенными (protected)
Или защищенными, да. Благодарю за уточнение.
1
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
03.11.2015, 12:49
Цитата Сообщение от gru74ik Посмотреть сообщение
Нет такого. Есть данные-члены (data members), которые некоторые называют также "полями класса" (class fields).
Я имел ввиду поля класса, скрытые от пользователя.
Цитата Сообщение от gru74ik Посмотреть сообщение
Нет такого. Есть функции-члены (function members), которые некоторые называют также "методами класса" (class methods).
Тут я имел ввиду, функции, позволяющие работать с полями.
Цитата Сообщение от Tulosba Посмотреть сообщение
А вдруг?
Читал по поводу использованию #pragma once и #ifndef / #endif вместе, на сколько я понял ничего плохого в принципе быть не может

P.S. По поводу терминологии обещаю подтянуться
1
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 8
03.11.2015, 18:28  [ТС]
Дейтел,программирование на С++.Там есть небольшое введение в классы в главе 3
0
5 / 5 / 3
Регистрация: 03.11.2015
Сообщений: 30
03.11.2015, 21:27
Вот еще рабочий пример, корявый, но рабочий в VS2008
исполняемый matrik.h
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "time.h"
#include <string>
#include <conio.h>
using namespace std;
 
 
class matrik //создаем  класс с помощью ключевого слова class и имени Name_class
{
    public: // это спецификатор класс, он позволяет видеть все что идет после его
    int mas[50][50], mas2[50][50],sum[50][50],pro[50][50];
    int n,m,a,s;
    void set() //функция ввода кол-ва строк и столбцов
    {
        cout<<endl<<"Введите количество строк"<<endl;
        cin>>n;
        cout<<endl<<"Введите количество столбцов"<<endl;
        cin>>m;
        cout<<endl;
        }
 
    void get()     // функция заполнения и вывода матрицы
    {
    for (int i = 0; i < n; i++) {
     for (int j = 0; j < m; j++) {
      mas[i][j]=rand()%10+1;
     }
    }
    for (int i = 0; i < n; i++) {
      cout<<endl;
      for (int j = 0; j < m; j++) {
      cout<<mas[i][j]<<ends;
      }
    }
    }
    void get2()     // функция заполнения и вывода матрицы 2
    {
    for (int i = 0; i < n; i++) {
     for (int j = 0; j < m; j++) {
      mas2[i][j]=rand()%10+2;
     }
    }
    for (int i = 0; i < n; i++) {
      cout<<endl;
      for (int j = 0; j < m; j++) {
      cout<<mas2[i][j]<<ends;
      }
    }
    }
/*   void poisk() // функция поиска по индексу
    {
    cout<<endl<<"Введите номер элемента по строке"<<endl;
        cin>>a;
        cout<<endl<<"Введите номер элемента по столбцу"<<endl;
        cin>>s;
        cout<<endl;
      for (int i = 0; i < n; i++) {
     for (int j = 0; j < m; j++) {
      if (((a-1)==i)&&((s-1)==j)) {
      cout<<"Выбранный элемент "<<mas2[i][j]<<endl;
      }
 
     }
    }
    }*/
    
    void summ() // функция сложения матриц
    {
        cout<<endl<<"Результат сложения матриц: "<<endl;
    for (int i = 0; i < n; i++) {
     for (int j = 0; j < m; j++) {
      sum[i][j]=mas[i][j]+mas2[i][j];
     }
    }
    for (int i = 0; i < n; i++) {
      cout<<endl;
      for (int j = 0; j < m; j++) {
      cout<<sum[i][j]<<ends;
      }}
    }
    void prois() // функция произведения матриц
    {
        cout<<endl<<"Результат умножения матриц: "<<endl;
    for (int i = 0; i < n; i++) {
     for (int j = 0; j < m; j++) {
      pro[i][j]=mas[i][j]*mas2[i][j];
     }
    }
    for (int i = 0; i < n; i++) {
      cout<<endl;
      for (int j = 0; j < m; j++) {
      cout<<pro[i][j]<<ends;
      }}
    }
};

основной Laba2

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Laba2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "time.h"
#include <string>
#include <conio.h>
#include "matrik.h"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{   matrik m; // создание объекта класса, это обязательно
setlocale(LC_ALL,"Russian");
srand((unsigned)time(NULL));
int c, b;
m.set();
cout<<endl;
menu:
//system("cls");
cout<<endl<<"1. Вывести первую матрицу: "<<endl;
cout<<endl<<"2. Вывести вторую матрицу: "<<endl;
cout<<endl<<"3. Вывести результат сложения матриц: "<<endl;
cout<<endl<<"4. Вывести результат произведения матриц: "<<endl;
cout<<endl<<"0. Выход: "<<endl;
                        cin>>c;
                        if (c==1){
                            goto masss1;
                        } 
                        else {
                                if (c==2){
                                    goto masss2;
                                }
                                else {
                                    if (c==3){
                                        goto sssum;
                                    }
                                    else {
                                        if (c==4) {
                                            goto sam;
                                        }
                                        else {
                                            if (c==0) {
                                                goto end;
                                            }
                                            else {
                                                cout<<endl<<"Ошибка ввода, повторите ввод "<<endl;
                                                goto menu;
                                            }}}}}
 
 
masss1:                     
m.get();
cout<<endl;
goto menu;
 
masss2:
m.get2();
cout<<endl;
goto menu;
 
sssum:
m.summ();
cout<<endl;
goto menu;
 
sam:
m.prois();
cout<<endl;
goto menu;
 
end:
 //getch();
    return 0;
}
Еще раз прошу просить за корявость и goto
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
03.11.2015, 21:34
andrue_selen, Файл-то подключить получилось или все еще не выходит?
1
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 8
03.11.2015, 21:43  [ТС]
спасибо,все получилось,в #include надо было класс не в <> писать а в " "

Добавлено через 3 минуты
Bespridelschic, Конечно интересно,спасибо,начинаю въезжать))
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.11.2015, 21:53
Цитата Сообщение от gru74ik Посмотреть сообщение
class fields
нету такого в стандрате) слово fields пошло от "неверных" сишарперов).
Цитата Сообщение от gru74ik Посмотреть сообщение
Есть функции-члены (function members)
И такого на 56% уверен, что нету. Так как class methods отвечает за это понятие) И следовательно можно сказать
class methods == function members , в чём я собственно не уверен)))

Добавлено через 1 минуту
Цитата Сообщение от andrue_selen Посмотреть сообщение
в #include надо было класс не в <> писать а в " "
<> ищёт у себя в библиотеках (я про С++ компилятор)
"" ищет в папке(-ах) отмеченых как "Includes Directories"
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
03.11.2015, 21:53
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Есть функции-члены (function members)
Из стандарта вырезка
C++
1
2
3
4
5
X obj;
// ...
obj.*pmi = 7; // assign 7 to an integer
// member of obj
(obj.*pmf)(7); // call a function member of obj
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.11.2015, 21:57
del

Добавлено через 2 минуты
Цитата Сообщение от daslex Посмотреть сообщение
Из стандарта вырезка
56% не спроста - из-за толкования равенства двух выражений как одно и тоже. Я за 56% что это не одно и тоже. Написал же ж. Почему не читаем? *грустный_смайлик*
1
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 8
03.11.2015, 21:59  [ТС]
rikimaru2013, да,я уже прочитал,спасибо)
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
03.11.2015, 22:04
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
нету такого в стандрате) слово fields пошло от "неверных" сишарперов).
А это что?
Thus, the valarray template is neither a matrix class nor a field class
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.11.2015, 22:13
напоминает игру "найди самое редкое слово в стандарте" )
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
03.11.2015, 22:20
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
"найди самое редкое слово в стандарте" )


Ну, справедливости ради, я, короче, искал, искал что это за поле-то такое, но так и не нашел.
англ. не очень..
просто оно там, такое понятие, встречается.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.11.2015, 22:49
rikimaru2013, в C++ общепринятые термины данные-члены (data members) и функции-члены (function members) - оба термина имеются и в стандарте и в книгах Страуструпа.

Говорить поля класса вместо данные-члены и методы класса вместо функции-члены с точки зрения строгости терминологии, действительно, неверно. Пуристы откладывают тонны кирпичей, когда в очередной раз сталкиваются с "вопиющим нарушением канонов". Таких терминов, действительно, изначально не было в С++, они заимствованы из других языков программирования (Java, C# и т.п.). Но реальность такова, что 80% народу употребляет оба варианта и адекватные люди не парятся на этот счёт. Более того, заимствованная терминология в качестве синонимов устоявшихся терминов уже употребляется и в учебной литературе (Макконнелл, Эккель, Прата), а не только в неформальном общении программистов.
2
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.11.2015, 22:54
gru74ik, я просто ненавижу C#-еров. Когда проливаешь седьмой пот от подводных камней языка, а эти т*ари еще на этапе компиляции решают 80% проблем. *слезливый_смайлик*
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
03.11.2015, 22:59
rikimaru2013, бывают граммар-наци, а ты C++наци
Миниатюры
Как создать свой класс и подключить его в main?  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2015, 22:59
Помогаю со студенческими работами здесь

как создать свой класс, в Делфи?
как создать свой класс, в Делфи? а потом вызвать, например при открытии? begin if pnl1.Color=clRed then //питание on begin ...

Как создать свой Toolbox, точнее на подобии его?
Здравствуйте. Скажите пожалуйста, как создать свой Toolbox, точнее на подобии его? Не пойму как он правильно называется, чтобы найти...

Как создать свой поток и связать его с консолью
Собственно возник такой вопрос: читаю Саттера пробую создать свой класс символов не чувствительный к регистру. Автор пишет, что для вывода...

Как создать свой тип файлов и ассоциировать его со своим приложением
Например, AutoCAD .dwg и т.п. Заранее спасибо)

Как создать DLL на С++, чтобы его можно было подключить к VBA?
Нужно, чтобы можно было создавать в VBA объекты классов, которые описаны в C++. Как подключить к VBA библиотеку с функциями,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru