1 / 1 / 0
Регистрация: 09.02.2020
Сообщений: 68
1

Вызов метода объекта внутри определения метода другого объекта(вложенные классы)

10.03.2020, 18:19. Показов 513. Ответов 6
Метки c++, sfml (Все метки)

Как мне вызвать метод объекта slider класса Slider внутри определения метода объекта класса StateBar?
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
class StateBar
{
public:
 
    Image image;
    Texture texture;
    Sprite sprite;
 
    class Slider
    {
 
    public:
        Image image;
        Texture texture;
        Sprite sprite;
        
        void up(float value)
        {
            if (this->y + value < 11.1) { this->y = 11.1; }
            else { this->y -= value; }
        }
 
        void down(float value)
        {
            if (this->y - value > 110) { this-> y = 110; }
            else { this->y -= value; }
        }
        //1022
        void update()
        {
            sprite.setPosition(17.6, y);
            window.draw(sprite);
        }
        Slider()
        {
            image.loadFromFile("images/slider.png");
            texture.loadFromImage(image);
            sprite.setTexture(texture);
            sprite.setScale(0.1, 0.1);
            sprite.setPosition(17.6, 111  * 0.1);
        }
    private:
        float y;
    };
    StateBar::Slider slider();
    
 
    void Health(string act, float value)
    {
        if (act == "-")
        {
            cout << "Health reduced by " << value << endl;
        }
        if (act == "+")
        {
            cout << "Health increased by " << value << endl;
        }
    }
 
    void update(float time)
    {
        sprite.setPosition(x, y);
        window.draw(sprite);
        Slider::slider.update();
       
 
    }
    StateBar(float x, float y)
    {
        this->x = x;
        this->y = y;
        image.loadFromFile("images/stateBar.png");
        texture.loadFromImage(image);
        sprite.setTexture(texture);
        sprite.setScale(0.1, 0.1);
 
    }
private:
    float x;
    float y;
};
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2020, 18:19
Ответы с готовыми решениями:

Вызов метода объекта класса
Как вызвать метод объекта класса ? заголовочный файл********** #include &lt;vector&gt;...

Вызов метода для объекта (ооп с++)
Доброе время суток! У меня есть класс class Player {...} есть объект Player user; Есть...

Динамический вызов метода объекта (рефлексия)
У меня есть в виде строки название метода объекта, как я могу вызвать этот метод? Везде в сети...

Вызов метода для объекта в таблице
Помогите разобраться пожалуйста. Допустим есть некоторый тип mytype, а в нем метод mymethod....

6
4633 / 2477 / 1028
Регистрация: 07.02.2019
Сообщений: 6,450
10.03.2020, 18:22 2
Цитата Сообщение от FeatheredVortex Посмотреть сообщение
StateBar::Slider slider();
Slider slider;
Цитата Сообщение от FeatheredVortex Посмотреть сообщение
Slider::slider.update();
slider.update();
0
1 / 1 / 0
Регистрация: 09.02.2020
Сообщений: 68
11.03.2020, 21:54  [ТС] 3
Вроде делал так, но не сработало.
Visual Studio 2019
0
С чаем беда...
Эксперт CЭксперт С++
9283 / 4776 / 1296
Регистрация: 18.10.2014
Сообщений: 10,911
11.03.2020, 22:10 4
Цитата Сообщение от FeatheredVortex Посмотреть сообщение
метод объекта slider
Но у вас в коде нет никакого "объекта slider"? Где он?

В классе StateBar у вас есть некий метод по имени slider

C++
1
StateBar::Slider slider();
А объекта с таким именем у вас нигде нет. Что вы собрались вызывать?

Добавлено через 2 минуты
И что это вообще такое

C++
1
Slider::slider.update();
На что вы пытаетесь сослаться через имя Slider::slider?
0
1 / 1 / 0
Регистрация: 09.02.2020
Сообщений: 68
14.03.2020, 19:03  [ТС] 5
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Но у вас в коде нет никакого "объекта slider"? Где он?
строчка 45
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Slider::slider.update();
Я пытался вызвать метод у объекта
Класс::объект.метод();
0
С чаем беда...
Эксперт CЭксперт С++
9283 / 4776 / 1296
Регистрация: 18.10.2014
Сообщений: 10,911
14.03.2020, 19:32 6
Цитата Сообщение от FeatheredVortex Посмотреть сообщение
строчка 45
В строчке 45 у вас нет никакого объекта slider. У вас там объявлена функция slider().

Если вы знакомы с азами языка, то вы должны понимать, что присутствие такого () в объявлении в строчке 45 означает, что объявляется функция. Если вы хотели объявить объект, что зачем вы прилепили туда эти ()?

Цитата Сообщение от FeatheredVortex Посмотреть сообщение
Я пытался вызвать метод у объекта
Класс::объект.метод();
В С++ синтаксис Класс::объект имеет смысл, когда Класс содержит объект в качестве своего члена. То есть бы вы написали StateBar::slider, то еще можно было бы понять вашу логику.

Но что такое Slider::slider - совершенно не ясно. К чему это?
0
1 / 1 / 0
Регистрация: 09.02.2020
Сообщений: 68
14.03.2020, 19:41  [ТС] 7
Ой, невнимательность
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2020, 19:41

Вызов метода конкретного объекта в потоке
Ситуация: имеется класс TExample, в котором есть public метод DoSomething(параметры). Создан объект...

Объект внутри объекта / метод внутри метода
Салам, братва. Я вроде как новичок в ООП... Не подскажите, что это такое в плане конструкции и где...

Объявление метода внутри объекта JAVASCRIPt
Как объявить метод внутри объекта JAVASCRIPT? Вот так написал, это правильно? &lt;script&gt; ...

Создание объекта класса и вызов его метода
Добрый день, форумчане. На Яве программирую не больше недели. Столкнулся со следующей проблемой....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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