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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
graph
1 / 1 / 0
Регистрация: 31.10.2008
Сообщений: 21
#1

Как изменить статический приватный член класса? - C++

07.05.2009, 16:24. Просмотров 1241. Ответов 8
Метки нет (Все метки)

Как изменить статический приватный член класса если менять его нужно в main()!??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2009, 16:24     Как изменить статический приватный член класса?
Посмотрите здесь:

Статический массив как член класса - C++
Я туплю, что ли, почему это компилируется? о_О struct V { int v; }; V v1; V v2(v1); // копирование v2 = v1; //...

Статический константный член-класса - C++
Добрый день, что компилятору не нравится? VS 2013 // рекурсивное шаблоное метапрограммирование #include <iostream> using namespace...

Как добавить в вектор приватный объект класса - C++
Как добавить в вектор приватный объект класса? К примеру . ... class Class { public: int metod(); // который = b int i;

Как объявить статический метод класса? - C++
выдает ошибку на 11 16 19 строку((((((( #include <iostream> using namespace std; class Sop { private: short int kol; ...

Член-ссылка на другой член класса - C++
Есть класс Dot с двумя членами - x и y. Требуется еще один класс, который хранит width i height, но реализация этого класса ничем не...

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

Массив как член класса - C++
Почему мне GCC выдаёт ошибку компиляции, что это zero-sized array ? struct Base { const char* d{"f", "f"}; }; ISO C++...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
07.05.2009, 16:56     Как изменить статический приватный член класса? #2
Никак.
Приватные поля не для того придумывали, чтобы кто попало изменять мог.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.05.2009, 18:22     Как изменить статический приватный член класса? #3
прямого доступа к приватным членам из main() нет... вы можете только применить следующую конструкцию:

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
#include <iostream>
class A
{
    private:
        static int var;
 
    public:
        void SetVar(int n)
        {
            var = n;
        }
 
        void GetVar()
        {
            cout << var << endl;
        }
};
 
int A::var = 0;
 
int main()
{
    A obj;
    obj.SetVar(5);
    obj.GetVar();
 
    system("pause");
    return 0;
}
Rumata
4 / 4 / 0
Регистрация: 10.04.2009
Сообщений: 23
07.05.2009, 20:47     Как изменить статический приватный член класса? #4
Цитата Сообщение от graph Посмотреть сообщение
Как изменить статический приватный член класса если менять его нужно в main()!??
в public создать метод этого класса, в main() вызвать метод

прямого доступа нет
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 344
Записей в блоге: 2
13.11.2012, 02:13     Как изменить статический приватный член класса? #5
А как на счёт рефлексии? Неужели не получится?


PS: Спрашиваю, потому что сейчас как раз подобную задачу решаю (для сериализации нужно) и пытаюсь разобраться с рефлексией.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.11.2012, 09:20     Как изменить статический приватный член класса? #6
В C++ нет рефлексии на уровне языка. Если вы нашли библиотеку, реализующую её, — читайте документацию к ней.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.11.2012, 09:35     Как изменить статический приватный член класса? #7
Цитата Сообщение от Rififi Посмотреть сообщение
Никак.
Приватные поля не для того придумывали, чтобы кто попало изменять мог.
Ну почему же, можно. В мейне вызвать метод, а в нём поменять.

Добавлено через 1 минуту
Цитата Сообщение от НеСказочник Посмотреть сообщение
А как на счёт рефлексии?
А что такое рефлексия?
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
13.11.2012, 09:48     Как изменить статический приватный член класса? #8
taras atavin, reflection
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 09:52     Как изменить статический приватный член класса?
Еще ссылки по теме:

Vector как член класса - C++
собственно заголовок моего класса: #pragma once #include &lt;Vector&gt; #include &quot;StdAfx.h&quot; #include &quot;PObject.h&quot; #include...

operator+ как член класса - C++
Могу ли я сделать operator+ как член класса таким образом? myClass&amp; myClass::operator+(const myClass&amp; other1, const myClass&amp; other2) { ...

Ifstream& как член класса - C++
Здравствуйте. Решаю задачу: Напишите функцию, получающую и качестве аргументов istream и vector&lt;string&gt; и возвращающую map&lt;string,...

Как вызвать член класса по адресу? - C++
В общем вопрос такой: допустим есть адрес класса, то получается по определенному смещению вызвать его член? (кстати, как можно найти...

Динамическая матрица как член класса - C++
Доброго времени суток, не так давно отзывчивые люди научили меня тому, что я хочу старая тема Путём ручное выделения памяти под нужный...


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

Или воспользуйтесь поиском по форуму:
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 344
Записей в блоге: 2
13.11.2012, 09:52     Как изменить статический приватный член класса? #9
Цитата Сообщение от taras atavin Посмотреть сообщение
Ну почему же, можно. В мейне вызвать метод, а в нём поменять.

Добавлено через 1 минуту
А что такое рефлексия?
Рефлексия - это как раз и есть штука, придуманная для подобных задач. Но подходит она не везде: http://ru.wikipedia.org/wiki/%D0%9E%...BD%D0%B8%D0%B5)
Yandex
Объявления
13.11.2012, 09:52     Как изменить статический приватный член класса?
Ответ Создать тему
Опции темы

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