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

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

Войти
Регистрация
Восстановить пароль
 
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
#1

Масив объектов - C++

07.10.2009, 22:52. Просмотров 1018. Ответов 14

Вот читаю тему массив объектов. набрал небольшой код, но программ не идёт.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
class MyClass {
    int x;
public:
    void set_x(int i) { x = i ; }
    int get_x() { return x; }
};
 
int main()
{
    MyClass obs[4];
    int i;
    for(i = 0; i < 4; i++)
    obs.set_x(i);
    for(i = 0; i < 4; i++)
    cout<<"obs["<<i<<"].get_x(): ";
    <<obs[i].get_x() << '\n';
    cin.get();
}
cpp(16) : error C2228: left of '.set_x' must have class/struct/union
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2009, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Масив объектов (C++):

Динамический масив: записать в масив все делители числа n - C++
Нужно записать в масив все делители числа n програма запускается но видает ошибку доступа к памяти... помогите разобраться #include...

Масив на 18 действ. Упорядочить по возростанию масив - C++
Ребята помогите пожалуйста с С++ Builder 1.Масив на 18 действ. Упорядочить по возростанию масив 2.Масив на 18 действ. Вычислить...

В программе реализовать возможность записи объектов в файл и чтения объектов из файла - C++
Добрый день, помогите, пожалуйста! У меня есть программа: #include &lt;iostream&gt; #include &lt;locale.h&gt; using namespace std; class...

Масив D[m][n] - C++
В масиве D действительных чисел найти суму елементов суму индексов каких парна. Помогите пожалуйста. В течение 30 мин срочно надо.

Масив - C++
Нужно зделать ёлку из двухмерного масива A!Через for+if Начинаем верхушка 1 символ и внизу по 1 добавляем полючаеться что-то на подобие...

Масив - C++
Здраствуйте у меня вопрос по массиву. Вот например мы вводим масив ну так скажем mas масив целочисельный как найти вот номер парных...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
07.10.2009, 22:59 #2
Код
 obs[COLOR="Red"][i][/COLOR].set_x(i);
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
07.10.2009, 23:24  [ТС] #3
Не прокоментируете вот это
C++
1
2
for(i = 0; i < 4; i++)
        obs.set_x(i);
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.10.2009, 23:31 #4
Хотел сказать это?
C++
1
2
for(i = 0; i < 4; i++)
        obs[i].set_x(i);
полю x i-ого элемента массива obs типа MyClass присваивается значение i
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.10.2009, 23:36 #5
Syltan, не
Цитата Сообщение от Syltan Посмотреть сообщение
for(i = 0; i < 4; i++)
obs.set_x(i);
а как уже сказал ISergey

C++
1
2
for(i = 0; i < 4; i++)
        obs[i].set_x(i);
у нас создан массив из четырех объектов. Вот мы каждому из объектов присваеваем свойству x некое значение. В данном случае:

у первого объекта свойство x = 0
у второго x = 1
у третьего x = 2
у четвертого x = 3
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 00:04  [ТС] #6
Код
присваеваем свойству x некое значение
Мы присваиваем свойству х , описанному в привате?
А затем выводим 4 раза этот х, описанный в привате:
C++
1
obs[i].get_x()
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
08.10.2009, 00:04 #7
Syltan, да, но черезе public метод set_x()
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 00:11  [ТС] #8
Ещё вопрос, как этот x получает значение, ведь,если например:
C++
1
2
3
int a[50];
for(int i=0; i< 4; i++)
a[i] =i
А как же тут присваивается?

C++
1
2
for(i = 0; i < 4; i++)
        obs[i].set_x(i);
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
08.10.2009, 00:20 #9
в метод set_x() передается значение.

C++
1
void set_x(int i) { x = i ; }
как видно, метод сам присваевает свойству x передавемое в аргументе значение i.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 00:25  [ТС] #10
Спасибо,скажите,а какую роль играет то,что этот х, расположен в привате, а не в паблике.
C++
1
2
private:
int x;
Ещё:
C++
1
void set_x(int i) { x = i ; }
Почему мы можем пользоваться в теле функции set_x переменной х, описанной в привате.
На сегодня это последние вопросы.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.10.2009, 00:25 #11
private разрешает доступ к переменным/методам/etc. в пределах своего класса, поэтому можем использовать. А скрываем для того, что бы допустим по невнимательности ты не изменил значение этого поля
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
08.10.2009, 00:38 #12
Syltan, почитайте о концепции ООП. В книге Лафоре "Объектно-ориентированное программирвоание в С++" это очень подробно расписано.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
08.10.2009, 00:53  [ТС] #13
А почему этот код, будет считаться неправильным:
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
#include <iostream>
using namespace std;
 
class MyClass {
    
public:
    int set_x(int i) {r = i }
    
};
int MyClass::get_x(int r)
{
    return r;
}
 
int main()
{
    MyClass obs[4];
    int i;
    for(i = 0; i < 4; i++)
        obs[i].set_x(i);
    for(i = 0; i < 4; i++)
    cout<<"obs[" <<i<<  "].get_x(): "
    <<obs[i].get_x() << '\n';
    cin.get();
}
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
08.10.2009, 01:02 #14
Цитата Сообщение от Syltan Посмотреть сообщение
А почему этот код, будет считаться неправильным:
Потому что гладиолус.
У тебя в самом класе не объявлен метод get_x().
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
08.10.2009, 02:20 #15
Код
int set_x(int i) {[COLOR="Red"]r[/COLOR] = i }
r - тоже не существует..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2009, 02:20
Привет! Вот еще темы с ответами:

Масив - C++
B заданной последовательности различных чисел a(1), a(2), … a (2n+1). Найти элемент a(m) такой, что множества L = {a(k): a(k) &lt; a(m)} и...

масив - C++
всем привет! очень нужна ваша помощь. 1) нужно заполнить двухмерную матрицу нулями над главной диагональю. 2) найти номер первого рядка...

масив - C++
господа програмисты как записать в масив все числа введённые с клавиатуры и показать на экране

масив - C++
необходимо проиницилизувати массив который состоит из н- элементов (какие вводе пользователь в любом порядке после этого выводится...


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

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

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