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

Изменение значения private поля в c++ - C++

Восстановить пароль Регистрация
 
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
04.11.2012, 21:18     Изменение значения private поля в c++ #1
При желании такое можно провернуть в c# (ну только естественно не на уровне объекта). Поэтому и возник такой вопрос. Ощущение что подобное возможно только в дин. языках. В общем быстрый гуглинг ничего не дал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 21:18     Изменение значения private поля в c++
Посмотрите здесь:

Изменение в файле записей с заданным значением поля C++
Структуры. Ввод значения поля C++
C++ Builder Изменение значения по позиции
О правилах хорошего тона в C++: изменение данных из private секции класса А в классе В через указатель C++
C++ Изменение значения указателя
C++ Класс field, все поля private
C++ Builder Изменение значения переменных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.11.2012, 01:06     Изменение значения private поля в c++ #2
http://liveworkspace.org/code/6ec32a...20c30a2e329dc9
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
09.11.2012, 19:07     Изменение значения private поля в c++ #3
Serg046, Первое - C# не является динамическим языком.
Второе - получить доступ к private данным, чтобы это работало в любом случае невозможно, по крайней мере на уровне С++. Можно написать #define private public - грязный хак. Можно сделать как написал Jupiter - не сработает, если в классе есть виртуальные функции. Можно специализировать шаблонную функцию класса для другого типа - далеко не во всех классах есть шаблонные функции.
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
09.11.2012, 21:23  [ТС]     Изменение значения private поля в c++ #4
Цитата Сообщение от ForEveR Посмотреть сообщение
Первое - C# не является динамическим языком.
Не правильно выразился, суть то ясна...
Цитата Сообщение от ForEveR Посмотреть сообщение
Второе - получить доступ к private данным, чтобы это работало в любом случае невозможно, по крайней мере на уровне С++.
Вот именно, нет. В c# такое сделать можно, но только не на уровне объекта. Если нужно пример могу найти.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
10.11.2012, 16:49     Изменение значения private поля в c++ #5
Serg046, Нужно. Чтобы работало в ЛЮБОМ случае. Включая виртуальные функции. Ну и без использования рефлексии само собой. Ну и естественно на уровне C#.

Добавлено через 33 минуты
С рефлексией понятное дело возможно многое.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    class New
    {
        private int value;
        public int Value { get { return value; } }
    }
    class Program
    {
        static void Main(string[] args)
        {
            New val = new New();
            var type = typeof(New);
            var field = type.GetField("value", BindingFlags.Instance | BindingFlags.NonPublic);
            if (field == null)
            {
                Console.WriteLine("Error");
                return;
            }
            field.SetValue(val, 10);
            Console.WriteLine(val.Value);
        }
    }
Результат будет 10.
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
10.11.2012, 18:22  [ТС]     Изменение значения private поля в c++ #6
Как делать в c# я и так знаю. Я ж писал про с++. В общем понял, спасибо за ответы.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
12.11.2012, 21:55     Изменение значения private поля в c++ #7
Serg046, А пример не предоставили...
Serg046, Нужно. Чтобы работало в ЛЮБОМ случае. Включая виртуальные функции. Ну и без использования рефлексии само собой. Ну и естественно на уровне C#.
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
13.11.2012, 19:50  [ТС]     Изменение значения private поля в c++ #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Serg046, А пример не предоставили...
Да я не успел ответить. Ну в общем вопрос закрыт, я разобрался как это делать в с++.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
13.11.2012, 21:18     Изменение значения private поля в c++ #9
Serg046, А пример-то можно? Узнать крайне интересно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 21:21     Изменение значения private поля в c++
Еще ссылки по теме:

C++ Изменение значения 7
C++ Builder Запретить изменение ширины конкретного поля (столбца) в ListView
C++ Изменение константного поля класса
C++ WinAPI Изменение значения в реестре
Как обратиться к функции поля объекта из private'a C++

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

Или воспользуйтесь поиском по форуму:
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
13.11.2012, 21:21  [ТС]     Изменение значения private поля в c++ #10
Ну я и имел ввиду рефлексию.

Добавлено через 1 минуту
Ваш пост не полностью прочитал, каюсь = ).
Я и не знал что этот способ не всегда пойдет. Ну ды мне это и не надо.
Yandex
Объявления
13.11.2012, 21:21     Изменение значения private поля в c++
Ответ Создать тему
Опции темы

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