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

Как изменить переменную в классе, находящуюся в private?

13.05.2019, 18:52. Показов 8949. Ответов 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
26
27
28
29
30
31
32
33
34
class Figura
{
private:
    float storona;
    float ploshad;
    
public:
 
};
 
 
 
class Romb : public Figura
{
private:
    int ugol;
 
public:
 
};
 
 
class Kvadrat : public Figura
{
public:
 
};
 
 
 
int main()
{
    Romb r;
    Kvadrat k;
По заданию надо, чтобы все переменные находились в private, как мне их вводить с клавиатуры?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2019, 18:52
Ответы с готовыми решениями:

наследование в классе нескольких функций из другого или как добавить функцию находящуюся в классе в другой класс
есть класс. есть второй класс. как добавить функцию находящуюся в классе в другой класс(второй) при этом второй уже наследует какой то...

Изменить переменную из класса MainActivity в классе MainRenderer
Ребята подскажите пожалуйста, у менять есть два файла: MainActivity.java import android.opengl.GLSurfaceView; import...

Через класс B изменить переменную type в классе А
У меня есть класс А. public class A extends B { private int type = 0; public GunsPistol(int type) { super(type); ...

13
2622 / 1633 / 266
Регистрация: 19.02.2010
Сообщений: 4,338
13.05.2019, 18:58
Сделайте для каждой переменной set- и get-функции, разместите их в public-разделах деклараций классов.

Можно ещё и параметризованные (т.е. с аргументами) конструкторы сделать (также в public), чтобы при создании экземпляра класса сразу все его переменные-члены инициализировать нужными=передаваемыми значениями. И void-конструкторы, чтобы создавать объекты с некими дефолтными (например, нулевыми) значениями переменных-членов.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
13.05.2019, 18:59
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Figura
{
private:
    float storona;
    float ploshad;
    
public:
     void setvalues(float s, float p){ 
         storona=s;
         ploshad=p;
     }
};
но вообще это такой бред... поля сторона и площадь. Там же класс 95% даю - абстрактный будет!
0
57 / 40 / 21
Регистрация: 26.09.2018
Сообщений: 215
13.05.2019, 19:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Figura
{
private:
    float storona;
    float ploshad;    
public:
    Figura(float a = 0.0, float b =0.0) : storona(a), ploshad(b) {} 
    void setStorona(float a) { this->storona = a; }
    void setPloshad(float a) { this->ploshad = a; }
    float getStorona() { return this->storona; }
    float getPloshad() { return this->ploshad; }
};
0
-3 / 0 / 1
Регистрация: 29.03.2018
Сообщений: 395
13.05.2019, 19:17  [ТС]
Kuzia domovenok, а как внутри наследуемого класса вызвать переменную из private базового?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
13.05.2019, 19:19
никак. protected для этого есть. но по-хорошему, у тебя есть методы класса setvalues
можешь аналогично вместо него сделать setStorona setPloshad
что ещё-то для счастья надо?
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
13.05.2019, 19:30
ChioraYaz, если это все та же задача Правильно ли я понял условие задачи?
то вот я упростил:
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
#include <iostream>
 
class figure
{
public:
    virtual double S() const = 0;
    virtual double side() const = 0;
    virtual ~figure() {}
};
 
class square : public figure
{
    double side_;
public:
    square(double a = 0) :side_(a) {}
    virtual ~square() override {}
 
    virtual double S() const override { return side_ * side_; }
    virtual double side() const override { return side_; }
};
 
class romb : public figure
{
    double diag1_;
    double diag2_;
public:
    romb(double d1 = 0, double d2 = 0) :diag1_(d1), diag2_(d2) {}
    virtual ~romb() override {}
 
    virtual double S() const override { return diag1_ * diag2_ / 2; }
    virtual double side() const override { return std::sqrt((diag1_ * diag1_ + diag2_ * diag2_) / 4); }
};
 
double foo(const figure& fig1, const figure& fig2)
{
    if (fig1.S() == fig2.S())
        return fig1.side() / fig2.side();
    else
        return fig1.S() / fig2.S();
}
 
int main()
{
    square sq(5);
    romb rm(10, 5);
    std::cout << foo(sq, rm);
}
0
-3 / 0 / 1
Регистрация: 29.03.2018
Сообщений: 395
13.05.2019, 20:11  [ТС]
В общем, получилось что-то, что соответствует заданию, но при стороне ромба 2 с углом 30 и стороне квадрата 3 выдаёт соотношение площадей -inf.
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
98
99
100
101
102
103
104
class Figura
{
private:
    float storona;
 
public:
    void setSt(float s)
    {
         storona=s;
    }
 
protected:
    float stP=storona;
};
 
 
 
class Romb : public Figura
{
private:
    int ugol;
 
public:
    void setUg(int u)
    {
        ugol=u;
    }
 
    float plSeek(float x,int y)
    {
        int z;
        z=x*x*sin(y*3.14159265/180);
        return z;
    }
 
    float seeker()
    {
        return plSeek(stP,ugol);
    }
 
    float stSeek()
    {
        return stP;
    }
};
 
 
class Kvadrat : public Figura
{
public:
    float plSeek(float x)
    {
        int z;
        z=x*x;
        return z;
    }
 
    float seeker()
    {
        return plSeek(stP);
    }
 
    float stSeek()
    {
        return stP;
    }
 
};
 
 
 
int main()
{
    Romb r;
    Kvadrat k;
    float a,b, plRomb, plKvadrat;
    int c;
 
    cout<<"ROMB"<<endl<<"Storona: ";cin>>a;
    cout<<"Ugol: ";cin>>c;
 
    r.setSt(a);
    r.setUg(c);
 
    cout<<"KVADRAT"<<endl<<"Storona: ";cin>>b;
 
    k.setSt(b);
 
    plRomb=r.seeker();
 
    plKvadrat=k.seeker();
 
    if(plRomb!=plKvadrat)
    {
        cout<<endl<<"Otnosheniye ploshadey r/k: "<<plRomb/plKvadrat;
    }
 
    if(plRomb==plKvadrat)
    {
        cout<<endl<<"Otnosheniye storon r/k: "<<r.stSeek()/k.stSeek();
    }
 
    return 0;
}
0
-3 / 0 / 1
Регистрация: 29.03.2018
Сообщений: 395
14.05.2019, 07:29  [ТС]
Название: Безымянный.png
Просмотров: 177

Размер: 8.3 Кб
Функция, которая достаёт из базового класса значения сторон, точно не работает, так как точно работает функция, передающая их туда.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
14.05.2019, 08:26
Цитата Сообщение от ChioraYaz Посмотреть сообщение
protected: float stP=storona;
удаляй это
0
-3 / 0 / 1
Регистрация: 29.03.2018
Сообщений: 395
14.05.2019, 08:46  [ТС]
Но без этого же точно не будет работать.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
14.05.2019, 08:52
ChioraYaz, с чего бы это? Если всё остальное без ошибок написать то заработает.
0
-3 / 0 / 1
Регистрация: 29.03.2018
Сообщений: 395
14.05.2019, 09:19  [ТС]
А что делать с функциями, которые используют это значение?

Добавлено через 22 минуты
В общем, сделал stP функцией, немного переделал, и всё заработало. Вообще ни хрена не понял, почему то же самое, но с переменной, не работало.
0
-3 / 0 / 1
Регистрация: 29.03.2018
Сообщений: 395
14.05.2019, 20:27  [ТС]
Совсем забыл скинуть код.

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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
 
class Figura
{
private:
    float storona;
 
public:
    void setSt(float s)
    {
         storona=s;
    }
 
protected:
    float stP()
    {
        return storona;
    }
};
 
 
 
class Romb : public Figura
{
private:
    float ugol;
 
public:
    void setUg(int u)
    {
        ugol=u;
    }
 
    float plSeek(float x,int y)
    {
        int z;
        z=x*x*sin(y*3.14159265/180);
        return z;
    }
 
    float seeker()
    {
        float z;
 
        z=stP();
 
        return plSeek(z,ugol);
    }
 
    float stSeek()
    {
        float z;
 
        z=stP();
 
        return z;
    }
};
 
 
class Kvadrat : public Figura
{
public:
    float plSeek(float x)
    {
        int z;
        z=x*x;
        return z;
    }
 
    float seeker()
    {
        float z;
 
        z=stP();
 
        return plSeek(z);
    }
 
    float stSeek()
    {
        float z;
 
        z=stP();
 
        return z;
    }
 
};
 
 
 
int main()
{
    Romb r;
    Kvadrat k;
    float a,b, plRomb, plKvadrat;
    int c;
 
    cout<<"ROMB"<<endl<<"Storona: ";cin>>a;
    cout<<"Ugol: ";cin>>c;
 
    r.setSt(a);
    r.setUg(c);
 
    cout<<"KVADRAT"<<endl<<"Storona: ";cin>>b;
 
    k.setSt(b);
 
    plRomb=r.seeker();
 
    plKvadrat=k.seeker();
 
    if(plRomb!=plKvadrat)
    {
        cout<<endl<<"Otnosheniye ploshadey r/k: "<<plRomb/plKvadrat;
    }
 
    if(plRomb==plKvadrat)
    {
        cout<<endl<<"Otnosheniye storon r/k: "<<r.stSeek()/k.stSeek()<<endl;
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2019, 20:27
Помогаю со студенческими работами здесь

Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе
У меня есть основной класс с названием Root один из его членов наследует дочерний класс SubRoot. Скажите как объявить, что бы один из...

Как обратиться к массивам в классе с модификатором доступа Private
Всем добрый день! подскажите пожалуйста, если в классе есть 2 массива с модификатором доступа private, как сделать так,чтобы при создании...

Как изменить название кнопки в классе dialog при нажатии на кнопку в классе mainwindow
Добрый день, я около месяца как начал изучать QT, то есть новичок. Собственно дело в следующем, создал новый проект (Приложение -&gt; qt...

Private данные. Как приравнять переменную к нулю
Подскажите как прировнять переменную Quant нулю? class Text { public: Text() { } void AddText(); void Quantity();

Зачем в классе private?
Объясните пожалуйста кто-нибудь зачем в классе private? что он делает? и почему его не в public поставить зачем приват? Тексты надо...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru