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

Структура или класс - C++

Восстановить пароль Регистрация
 
 
Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
29.03.2013, 20:45     Структура или класс #1
Подскажите, пожалуйста, своими словами, что такое структура и что такое класс. В чем отличие и как их использовать?
У меня есть двумерный массив, проходя по которому надо будет присваивать метки элементам массива. Т.е. смотрю текущее значение массива и сравниваю с соседами слева и справа, если значения совпадают то всем трем ячейкам надо присвоить одну метку. Полагаю, что здесь нужна структура или класс, но не знаю как их использовать! Подскажите с примером желательно!
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Friday
ну и долго меня небыло...
 Аватар для Friday
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
29.03.2013, 20:48     Структура или класс #2
в классе (class) все элементы по умолчанию имеют спецификатор доступа private
а в структуре (struct) - public
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.03.2013, 20:48     Структура или класс #3
в Си++ структуры и классы - это одно и то же, за исключением того, что в классах спецификатор доступа по умолчанию public
Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
29.03.2013, 21:19  [ТС]     Структура или класс #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class res {
     int label=0;
     int matrix[Rows][Cols];
}
 
for(i=0; i<Rows; i++)
{
   for(j=0; j<Cols; j++)
   {
        if(i!==0 || j!==0)
        {
          if(matrix[i][j-1]==0 && matrix[i-1][j]==0)
          matrix[i][j].label=label+1;
        }
        else 
       {
            if(matrix[i][j-1]==0)
                matrix[i][j].label=matrix[i][j-1].label;  //такая же метка как у соседа
            else
                 matrix[i][j].label=matrix[i-1][j].label;
        }
   }
}
исправьте что не так пожалуйста!!!
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 22:03     Структура или класс #5
C++
1
2
3
4
class res {
     int label;
     int matrix[Rows][Cols];
};
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.03.2013, 22:13     Структура или класс #6
Цитата Сообщение от Kr Посмотреть сообщение
исправьте что не так пожалуйста!!!
сложно сказать. Если этот текст - то, что ты пытаешься скомпилировать и запустить, то тут всё не так.
Если же ты понимаешь, что в программе требуется функция main и привёл для краткости только фрагмент кода из неё, то тут всё равно всё не так.

Потому что у тебя объявлен не массив классов, а класс с полем "массив чисел".
Наверное, ты хотел объявить массив так.
C++
1
2
3
class res {
     int label=0;
}matrix[Rows][Cols];
Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
29.03.2013, 22:24  [ТС]     Структура или класс #7
Разумеется, это только кусок кода.
я не знаю, КАК объявить класс, что туда задать , НО надо чтобы после этого работала эта штука :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for(i=0; i<Rows; i++)
{
   for(j=0; j<Cols; j++)
   {
        if(i!==0 || j!==0)
        {
          if(matrix[i][j-1]==0 && matrix[i-1][j]==0)
          matrix[i][j].label=label+1;
        }
        else 
       {
            if(matrix[i][j-1]==0)
                matrix[i][j].label=matrix[i][j-1].label;  //такая же метка как у соседа
            else
                 matrix[i][j].label=matrix[i-1][j].label;
        }
   }
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.03.2013, 22:31     Структура или класс #8
C++
1
2
3
class res {
     int label=0;
}matrix[Rows][Cols];
go,так ясен пень, что при наследовании тоже!
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.03.2013, 22:33     Структура или класс #9
Friday,
Kuzia domovenok, еще при наследовании у структур по умолчанию оно тоже public.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:03     Структура или класс #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
int label=0;
Это, при объявлении класса, как понять?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.03.2013, 23:10     Структура или класс #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Это, при объявлении класса, как понять?
C++11
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:12     Структура или класс #12
Цитата Сообщение от go Посмотреть сообщение
C++11
Не знал, сейчас проверю...
Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
29.03.2013, 23:20  [ТС]     Структура или класс #13
я НЕЗНАКОМА с классами и структурами!!

ребят, посмотрите вот если у меня сейчас матрица задана вот так --> int **matrix; а сейчас мне нужно ее в классе объявить мне тогде ее из int main убрать и в класс записать тоже так же int **matrix ???

// КАК СЕЙЧАС
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
....
....
int main()
{
int Rows, Cols;
int **matrix;
 
matrix = (int **)calloc( Rows, sizeof(int*) );
for( int i=0; i < Rows; i++ ) 
{
  matrix[i] = (int *)calloc( Cols, sizeof(int) );
  memset (matrix[i], 0, Cols*sizeof(int)); 
}
....
....
....
for(i=0; i<Rows; i++)
{
   for(j=0; j<Cols; j++)
   {
        if(i!==0 || j!==0)
        {
          if(matrix[i][j-1]==0 && matrix[i-1][j]==0)
          matrix[i][j].label=label+1;
        }
        else 
       {
            if(matrix[i][j-1]==0)
                matrix[i][j].label=matrix[i][j-1].label;  //такая же метка как у соседа
            else
                 matrix[i][j].label=matrix[i-1][j].label;
        }
   }
}
....
....
}
//СДЕЛАТЬ ТАК???
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
....
....
class res {
     int label;
} int **matrix;
 
int main()
{
int Rows, Cols;
matrix = (int **)calloc( Rows, sizeof(int*) );
for( int i=0; i < Rows; i++ ) 
{
  matrix[i] = (int *)calloc( Cols, sizeof(int) );
  memset (matrix[i], 0, Cols*sizeof(int)); 
}
....
....
....
for(i=0; i<Rows; i++)
{
   for(j=0; j<Cols; j++)
   {
        if(i!==0 || j!==0)
        {
          if(matrix[i][j-1]==0 && matrix[i-1][j]==0)
          matrix[i][j].label=label+1;
        }
        else 
       {
            if(matrix[i][j-1]==0)
                matrix[i][j].label=matrix[i][j-1].label;  //такая же метка как у соседа
            else
                 matrix[i][j].label=matrix[i-1][j].label;
        }
   }
}
....
....
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:20     Структура или класс #14
Цитата Сообщение от go Посмотреть сообщение
C++11
Но лучше не нужно... Не у всех есть...
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.03.2013, 23:20     Структура или класс #15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
go,так ясен пень, что при наследовании тоже!
Цитата Сообщение от go Посмотреть сообщение
оно тоже public.
Я имел в виду модификатор доступа. Похоже Вы меня не поняли.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct A 
{
public:
    int num;
};
 
struct B : A 
{
 
};
 
B obj;
obj.num;
А теперь поменяйте struct на class и почувствуйте разницу.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:28     Структура или класс #16
Kr, вы определитесь, что вам нужно... Чтобы работать с матрицами, класс создавать необязательно.

Добавлено через 45 секунд
Класс вам зачем нужен?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.03.2013, 23:32     Структура или класс #17
Цитата Сообщение от alsav22 Посмотреть сообщение
Это, при объявлении класса, как понять?
так понять, что я не глядя скопировал это из кода ТС. Виноват.

Не по теме:

хотя вроде в каком-то новом стандарте так можно. Или нет... я так не делал никогда.

Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
29.03.2013, 23:32  [ТС]     Структура или класс #18
я это понимаю. я же сказала, что мне нужно, чтобы я могла определенному элементу двумерного массива присваивать метку. У меня есть двумерный массив, проходя по которому надо будет присваивать метки элементам массива. Т.е. смотрю текущее значение массива и сравниваю с соседами слева и справа, если значения совпадают то всем трем ячейкам надо присвоить одну метку.
как я могу запоминать метки конкретных элементов и потом к ним обращаться без использования класса или структуры???
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.03.2013, 23:34     Структура или класс #19
Цитата Сообщение от go Посмотреть сообщение
Похоже Вы меня не поняли.
Не не не,
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
в классах спецификатор доступа по умолчанию public
я имел в виду, что спецификатор доступа у структур по умолчанию public и для членов и при наследовании.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 23:43     Структура или класс
Еще ссылки по теме:

Криво заносит или кривая структура ! C++
C++ структура и класс
Структура «Школьник»: фамилия, имя, отчество; класс; номер телефона; оценки по предметам C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:43     Структура или класс #20

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Не по теме:
хотя вроде в каком-то новом стандарте так можно. Или нет... я так не делал никогда.
go подсказал, что в С++11. Сам не знал...



Добавлено через 6 минут
Пока ошибка синтаксиса:
Цитата Сообщение от Kr Посмотреть сообщение
if(i!==0 || j!==0)
Yandex
Объявления
29.03.2013, 23:43     Структура или класс
Ответ Создать тему
Опции темы

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