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

Как вызвать несколько методов у класса сразу?

14.01.2018, 14:35. Показов 3614. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, нужна помощь.
У меня есть класс:
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
#pragma once
using namespace System;
using namespace System::Windows::Forms;
 
ref class MyClass {
public:
    String^ getErrMsg() 
    {
        return this->errmsg;
    }
    ref class MyTwoClass {
    public:
        void setOne()
        {
            ms += "1";
        }
        void setTwo()
        {
            ms += "2";
        }
        String^ getMS()
        {
            return ms;
        }
    private:
        String^ ms;
    };
private:
    String^ errmsg;
};
Мне нужно, чтобы сначала сработал метод setOne() потом setTwo() и затем getMS().
Сейчас я пишу так:
C++
1
2
3
4
5
MyClass::MyTwoClass^ d = gcnew MyClass::MyTwoClass;
d->setOne();
d->setTwo();
String^ mss = d->getMS();
MessageBox::Show(mss);
А хотелось бы так:
C++
1
2
3
MyClass::MyTwoClass^ d = gcnew MyClass::MyTwoClass;
String^ mss = d->setOne()->setTwo()->getMS();
MessageBox::Show(mss);
Но тогда мне выдает такую ошибку:
Error 1 error C2227: left of '->setTwo' must point to class/struct/union/generic type
Error 2 error C2227: left of '->getMS' must point to class/struct/union/generic type

Может есть какой-нибудь вариант?
0
Лучшие ответы (1)
14.01.2018, 14:35
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2018, 14:35
Ответы с готовыми решениями:

Методы вызываются через указатель на объект класса; Как компилятор определяет, какой из методов надо вызвать?
Ребята, если вникать, то вообще ничё непонятно. Вот смотрите: пусть у нас есть абстрактный класс abstr (abstr.h) и в нём определено,...

Реализовать несколько методов или классов с методами и вызвать один метод из другого
В вызываемом методе сгенерировать исключение и «поднять» его в вызывающий метод.

Каким лучше образом создавать сразу несколько экземпляров класса?
Каким лучше образом создавать сразу несколько классов? Что-то подсказывает, что это не очень гуд. int n_stud; cout <<...

3
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
14.01.2018, 16:21 2
Лучший ответ Сообщение было отмечено Dea_Winchester как решение

Решение

Dea_Winchester, для этого надо что бы метод возвращал ссылку на объект
1
0 / 0 / 0
Регистрация: 02.05.2016
Сообщений: 42
15.01.2018, 00:16  [ТС] 3
Не подскажите как это можно сделать?
Как сделать чтобы он сначала выполнил нужный код, а потом вернул ссылку на объект?

Добавлено через 2 часа 14 минут
Сделал так, вроде работает.
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
#pragma once
using namespace System;
using namespace System::Windows::Forms;
 
ref class MyClass {
public:
    String^ getErrMsg() 
    {
        return this->errmsg;
    }
    ref class MyTwoClass {
    public:
        MyClass::MyTwoClass^ setOne()
        {
            ms += "1";
        return this;
        }
        MyClass::MyTwoClass^ setTwo()
        {
            ms += "2";
        return this;
        }
        String^ getMS()
        {
            return ms;
        }
    private:
        String^ ms;
    };
private:
    String^ errmsg;
};
Это имели ввиду? всё правильно написал?
0
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
15.01.2018, 06:35 4
Dea_Winchester, очень похоже на правду хотя я на си диез не пишу
0
15.01.2018, 06:35
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2018, 06:35
Помогаю со студенческими работами здесь

Как вызвать переменные из методов?
Нужно создать класс User, в котором должны быть поля name и surname, чтобы выводилось имя из поля name, фамилия из поля surname в формате...

Как сразу вызвать таймер?
Timer = new System.Timers.Timer(); Timer.Elapsed += new ElapsedEventHandler(TimersC); Timer.Interval = 100000; Timer.Start(); ...

Как вынести описание методов вложенного класса за пределы класса?
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?

Наследование: Как мне определить любой из методов заданного класса внутри другого класса?
Добрый день, подскажите пожалуйста, что я делаю не так Есть файл Container.h в котором храню прототипы методов class Container ...

Как в методе класса вызвать другой метод того же класса?
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Пользуясь нейросетью возвращаюсь к вопросу альтернативных приводов поступательного движения.
Hrethgir 14.02.2025
Описание тут https:/ / habr. com/ ru/ articles/ 778118/ . Вопрос ответ You Привет. Скажи, есть-ли вещества, которые могут менять жидкое состояние на желеобразное под воздействием ультразвука? . . .
Ошибка "Another git process seems to be running in this repository"
hw_wired 14.02.2025
При работе с git можно столкнуться с довольно раздражающей ошибкой "Another git process seems to be running in this repository". Эта ситуация возникает, когда система контроля версий пытается. . .
Ошибка "java.lang.NoCl­assDefFou­ndErro­r: javax/xml/bind/JAXBException"
hw_wired 14.02.2025
Как разработчики Java-приложений, мы сталкиваемся с разными ошибками, но одна из них - java. lang. NoClassDefFoundError: javax/ xml/ bind/ JAXBException - стала особенно актуальной после выхода Java 9. . . .
Отличия for-in от for-of в JavaScript
hw_wired 14.02.2025
Когда-то единственным способом перебора элементов массива или свойств объекта был классический цикл for с счетчиком. Да, он отлично справлялся с задачей, но код получался громоздким и не очень. . .
Отличия implementation, api и compile в Gradle
hw_wired 14.02.2025
Управление зависимостями - одна из ключевых задач при разработке современных приложений на Java и Kotlin. Система сборки Gradle предоставляет гибкие и мощные средства для работы с зависимостями,. . .
Что лучше: require или import/export в JavaScript
hw_wired 14.02.2025
Модульность в JavaScript прошла долгий путь эволюции, и сегодня у разработчиков есть два основных способа организации модулей: старый добрый require из системы CommonJS и современные import/ export из. . .
Ошибка "Uncaught SyntaxError: Cannot use import statement outside a module"
hw_wired 14.02.2025
Думаю, многие разработчики сталкивались с ошибкой "Uncaught SyntaxError: Cannot use import statement outside a module" при попытке использовать современный синтаксис импорта в JavaScript. Эта. . .
Ошибка Docker "Got permission denied while trying to connect to the Docker daemon socket at"
hw_wired 14.02.2025
Разработка с использованием Docker может иногда преподносить неожиданные сюрпризы, и одним из самых распространенных камней преткновения становится ошибка с отказом в доступе к демону Docker. . . .
Ошибка "No 'Access-Control-Allow-Origin' header is present on the requested resource"
hw_wired 14.02.2025
При разработке современных веб-приложений нередко сталкиваешься с ошибкой "No 'Access-Control-Allow-Origin' header is present on the requested resource". Эта проблема возникает из-за политики. . .
Как закрыть порт в Linux
hw_wired 14.02.2025
Управление сетевыми портами в Linux - непростая, но важная задача для обеспечения безопасности системы. Каждый открытый порт - это потенциальная уязвимость, через которую злоумышленики могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru