Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 23.10.2019
Сообщений: 104
1

Статический метод для информации о всех объектах класса

29.04.2020, 09:04. Показов 1196. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. У меня есть класс, который содержит вектор double. В этом классе есть метод show(); который возвращает значения вектора в одном стринге.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class statistics{
public:
    std::vector<double> vec;
    statistics(const std::vector<double> &vec){
        this->vec = vec;
    }
 std::string show(){
        std::string ret;
        std::for_each(this->vec.begin(), this->vec.end(),[&ret](const double &ad){
 
           ret += std::to_string((int)ad);
            ret += " ";
        });
        return ret;
Нужно написать статический метод, при вызове которого, выведет информацию о всех объектах класса. Например у меня будет два объекта класса и у них два разных вектора.
При вызове статического метода, выведутся эти два вектора. Одним словом, как получить доступ ко всем объектам класса через static метод.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2020, 09:04
Ответы с готовыми решениями:

Как рефлексией динамически получить статический метод для класса Convert
Как динамически получить метод для нестатического класса, я уже нашел. Делается что-то типа этого:...

Вызов метода из другого класса, при этом нельзя создать объект второго класса и метод не статический
У меня есть 2 класса - один с формой и кнопкой на ней и другой класс, у которого есть метод void...

Статический метод вывода информации о классе
Создать статический метод вывода информации о классе

Статический элемент и метод класса
Доброго времени суток, разбираюсь со статическим элементом и методом класса. накидал небольшую...

6
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
29.04.2020, 09:30 2
Статический метод может использовать только статические данные класса.
Поэтому вижу только один изврат:
завести дополнительно статические данные, в которые нестатические методы запишут свои результаты.
после этого статический метод сможет их использовать.
Что-то вроде этого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
static std::string tmp;
std::string show()
{
   std::string ret;
...
   tmp=ret;
   return ret;
}
static void Print()
{
    std::cout<<tmp;
}
0
1 / 1 / 1
Регистрация: 23.10.2019
Сообщений: 104
29.04.2020, 09:40  [ТС] 3
Пытаюсь сделать что-то подобное, но с вектором объектов. Знаю что в Java при вызове конструктора, можно обратиться к объекту на котором он вызывается словом 'this'. Есть ли что-то подобное в плюсах ?
C++
1
2
3
4
5
6
7
8
class statistics{
public:
    std::vector<double> vec;
    static std::vector<statistics> all;
    statistics(const std::vector<double> &vec){
        this->vec = vec;
all.push_back(this);
    }
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
29.04.2020, 10:22 4
правильно, кроме all.push_back(this);
C++
1
        all.push_back(this->vec);
0
1 / 1 / 1
Регистрация: 23.10.2019
Сообщений: 104
29.04.2020, 10:27  [ТС] 5
Вы не поняли, я хочу хранить в своем векторе объекты класса, не векторы этих объектов, а сами объекты, это возможно как-то сделать ?
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
29.04.2020, 10:29 6
Лучший ответ Сообщение было отмечено Ulinay как решение

Решение

тогда
C++
1
all.push_back(*this);
Только не забудьте добавить копиконструктор в класс statistics
1
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
29.04.2020, 11:03 7
Ulinay, это не сложно, но боюсь трудновато вам будет. Я бы посоветовал завести статический вектор указателей на объекты. Его можно обернуть статическим методом возвращающим ссылку. Это позволит в каждом конструкторе добавлять указатель нового объекта, а в деструкторе - удалять. Тут даже без учёта move семантики нужно повозиться)
Имея такой вектор вы можете получить и рассчитать всё что душе угодно.
0
29.04.2020, 11:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2020, 11:03
Помогаю со студенческими работами здесь

Написать статический метод класса
Добрый день, подскажите, как можно реализовать данную программу? Требуется написать статический...

Как объявить статический метод класса?
выдает ошибку на 11 16 19 строку((((((( #include &lt;iostream&gt; using namespace std; class Sop...

По какому объекту синхронизируется статический метод класса?
Если мы синхронизируем не статический метод, то он синхронизируется по &quot;своему&quot; объекту. А если мы...

CreateThread: возможно ли запустить не статический метод класса?
Возможно ли в CreateThread запустить не static процедуру класса? clas_s obj; HANDLE h =...

Приложение для вычисления результирующей информации об объектах, описанных с помощью наследования
Доброго времени суток! заранее спасибо, что уделили время на мое сообщение! надо создать...

Как передать нестатическое поле в статический метод класса?
есть статическая фукция static LRESULT CALLBACK WndProc ( HWND,UINT,WPARAM,LPARAM); в ней...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru