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

C++

Войти
Регистрация
Восстановить пароль
 
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
#1

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

04.11.2012, 21:18. Просмотров 974. Ответов 9
Метки нет (Все метки)

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

Изменение значения 7 - C++
Добрый день! Стоит задача переопределить значение 7. Только не надо кричать, что это бред. Мне сказали, что это возможно, хоть и звучит...

Запретить изменение ширины конкретного поля (столбца) в ListView - C++ Builder
Здравствуйте!!! Подскажите, существует ли какой-нить способ запретить изменение ширины конкретного поля в ListView? Чтобы нельзя было...

Изменение значения переменных - C++ Builder
Поменять значения переменных A и B между собой, не заводя дополнительных переменных. Входной файл input.txt содержит числа a и b (0 <= a, b...

Изменение значения по позиции - C++ Builder
Вообщем вот такая есть программа при нажатии на кнопку она должа вывести мне вот это ^ff9b3e но не выводит ничего помогите что же это...

Вывод сообщения в зависимости от значения поля - C++ Builder
Здравствуйте! Подскажите, пожалуйста, как реализовать программу такого типа: Есть форма для ввода данных, и есть кнопка, которая эти данные...

Изменение значения в ячейках stringgrid - C++ Builder
Здравствуйте, такая проблема, суть задачи в замене столбцов в которых лежат наибольший и наименьший элементы матрицы, никак не могу...

9
Jupiter
Каратель
Эксперт С++
6558 / 3979 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.11.2012, 01:06 #2
http://liveworkspace.org/code/6ec32a51023115791020c30a2e329dc9
1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.11.2012, 19:07 #3
Serg046, Первое - C# не является динамическим языком.
Второе - получить доступ к private данным, чтобы это работало в любом случае невозможно, по крайней мере на уровне С++. Можно написать #define private public - грязный хак. Можно сделать как написал Jupiter - не сработает, если в классе есть виртуальные функции. Можно специализировать шаблонную функцию класса для другого типа - далеко не во всех классах есть шаблонные функции.
0
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
09.11.2012, 21:23  [ТС] #4
Цитата Сообщение от ForEveR Посмотреть сообщение
Первое - C# не является динамическим языком.
Не правильно выразился, суть то ясна...
Цитата Сообщение от ForEveR Посмотреть сообщение
Второе - получить доступ к private данным, чтобы это работало в любом случае невозможно, по крайней мере на уровне С++.
Вот именно, нет. В c# такое сделать можно, но только не на уровне объекта. Если нужно пример могу найти.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.11.2012, 16:49 #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.
2
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
10.11.2012, 18:22  [ТС] #6
Как делать в c# я и так знаю. Я ж писал про с++. В общем понял, спасибо за ответы.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
12.11.2012, 21:55 #7
Serg046, А пример не предоставили...
Serg046, Нужно. Чтобы работало в ЛЮБОМ случае. Включая виртуальные функции. Ну и без использования рефлексии само собой. Ну и естественно на уровне C#.
0
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
13.11.2012, 19:50  [ТС] #8
Цитата Сообщение от ForEveR Посмотреть сообщение
Serg046, А пример не предоставили...
Да я не успел ответить. Ну в общем вопрос закрыт, я разобрался как это делать в с++.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
13.11.2012, 21:18 #9
Serg046, А пример-то можно? Узнать крайне интересно.
0
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
13.11.2012, 21:21  [ТС] #10
Ну я и имел ввиду рефлексию.

Добавлено через 1 минуту
Ваш пост не полностью прочитал, каюсь = ).
Я и не знал что этот способ не всегда пойдет. Ну ды мне это и не надо.
0
13.11.2012, 21:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 21:21
Привет! Вот еще темы с ответами:

Отсортировать массив структур по возрастанию значения заданного поля - C++ Builder
#include <vcl.h> #pragma hdrstop #pragma argsused #include <stdlib.h> #include <stdio.h> #include <windows.h> #include...

Изменение Hint для каждого значения ячейки StringGrid - C++ Builder
Всем доброго времени суток. Кто может подсказать как можно реализовать, что бы когда наводишь на ячейку StringGrid-a в Hint выводилось это...

Новый параметр в разделе Private bool bPaused - C++ Builder
Всем привет. Почти доделал по инструкции синтезатор, но вот в конце, где идет это я никак не пойму, что же такое параметр в разделе...

Добавление кнопки "Обзор" // Изменение свойств поля,изменение значения по 2му шелчку - MS Access
Доброго времени суток! Есть форма для будущего заполнения пустой базы данных для учета производства в цифровой типографии (как пример)...


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

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

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