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

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

Войти
Регистрация
Восстановить пароль
 
 
Kr
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 35
#1

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

29.03.2013, 20:45. Просмотров 985. Ответов 23
Метки нет (Все метки)

Подскажите, пожалуйста, своими словами, что такое структура и что такое класс. В чем отличие и как их использовать?
У меня есть двумерный массив, проходя по которому надо будет присваивать метки элементам массива. Т.е. смотрю текущее значение массива и сравниваю с соседами слева и справа, если значения совпадают то всем трем ячейкам надо присвоить одну метку. Полагаю, что здесь нужна структура или класс, но не знаю как их использовать! Подскажите с примером желательно!
Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 20:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура или класс (C++):

Требуется класс, делегат, перечисление, интерфейс или структура - C++
помогите понять в чем тут всё таки ошибка, все попытки исправить самостоятельно были безрезультатны... using System; using...

Класс, структура - C++
есть классы class A { public: char ch; int a, b; double c; };

Структура и класс - C++
Доброго времени суток! Имеется задача: создать класс для работы с КАРТОТЕКОЙ КНИГ. Класс хранит информацию: название, имя автора, издание...

структура и класс - C++
здравствуйте, мне нужно рганизовать структуру Point с float полями x,y, организовать класс Triangle с Point полями a,b,c и функцией...

Вложенная структура в класс - C++
Привет всем, пишу шаблонный класс - кольцевой двунаправленный список, вообщем объявил структуру Node в классе: template <class T>...

Получается структура в С++ - это класс? - C++
Элементами или полями структуры могут быть переменные, массивы, ранее определенные структуры. Функции не могут быть полями структуры (В...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
29.03.2013, 20:48 #2
в классе (class) все элементы по умолчанию имеют спецификатор доступа private
а в структуре (struct) - public
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.03.2013, 20:48 #3
в Си++ структуры и классы - это одно и то же, за исключением того, что в классах спецификатор доступа по умолчанию public
0
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;
        }
   }
}
исправьте что не так пожалуйста!!!
0
alsav22
5419 / 4815 / 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];
};
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.03.2013, 22:13 #6
Цитата Сообщение от Kr Посмотреть сообщение
исправьте что не так пожалуйста!!!
сложно сказать. Если этот текст - то, что ты пытаешься скомпилировать и запустить, то тут всё не так.
Если же ты понимаешь, что в программе требуется функция main и привёл для краткости только фрагмент кода из неё, то тут всё равно всё не так.

Потому что у тебя объявлен не массив классов, а класс с полем "массив чисел".
Наверное, ты хотел объявить массив так.
C++
1
2
3
class res {
     int label=0;
}matrix[Rows][Cols];
0
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;
        }
   }
}
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.03.2013, 22:31 #8
C++
1
2
3
class res {
     int label=0;
}matrix[Rows][Cols];
go,так ясен пень, что при наследовании тоже!
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.03.2013, 22:33 #9
Friday,
Kuzia domovenok, еще при наследовании у структур по умолчанию оно тоже public.
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:03 #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
int label=0;
Это, при объявлении класса, как понять?
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.03.2013, 23:10 #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Это, при объявлении класса, как понять?
C++11
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:12 #12
Цитата Сообщение от go Посмотреть сообщение
C++11
Не знал, сейчас проверю...
0
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;
        }
   }
}
....
....
}
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.03.2013, 23:20 #14
Цитата Сообщение от go Посмотреть сообщение
C++11
Но лучше не нужно... Не у всех есть...
0
go
Эксперт C++
3586 / 1366 / 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 и почувствуйте разницу.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 23:20
Привет! Вот еще темы с ответами:

оператора индексации+класс+структура - C++
Задача такая нужна создать словарь терминов. 1.Создаю свой тип данных помощью struct term (слово термин) definition (определение к...

Структура и класс string. Проблема с выводом строки. - C++
Такая проблема: объявляю структуру с классом string: struct exam { std::string name; ... }; Затем объявляю...

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

Криво заносит или кривая структура ! - C++
typedef struct{ string* item; //Имя пункта int p; //id страницы }menu_items; и в функции юзаю так: s.item += buf; cout&lt;&lt;...


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

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

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