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

Определить указатель на поля класса (для любого типа полей) и указатель на функции класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ setprecision() скинуть флаг http://www.cyberforum.ru/cpp-beginners/thread1103089.html
вообщем у меня много матриц, применяю fixed и setprecisiob() , после чего мне выводит фиксированное кол-во знаков после точки, как избавиться от 0 в этом случае, вроде там надо скинуть флаг какой-то...? т.е. грубо говоря чтобы было 0 0 0 0 0.123 0 0 0.213 0.34 0.567 а не 0.000 0.000 0.000 0.123 0.000 0.000 и т.д.
C++ Предупреждение(потеря данных из uint в size_t) Приветствую всех. есть такой код: typedef unsigned long long int uint; ....... double* arr; ....... uint count; count = .....; http://www.cyberforum.ru/cpp-beginners/thread1103064.html
Как вызвать "Beep()" в программе? C++
Товарищи, такой вопрос:Как мне вызвать биип(beep).Желательно алгоритм(объяснение ) и код . Заранее спасибо!
Есть ли строка противопоставленная strcat в C++? C++
Есть ли строка противопоставленная strcat в си++? что-то не нахожу...
C++ Компиляция HelloWorld g++ http://www.cyberforum.ru/cpp-beginners/thread1103054.html
Здравствуйте. Написал HelloWorld, решил собрать его вручную. Установил MinGW. Main.cpp: #include <iostream> using namespace std; int main() {
C++ Поля, переменные; Методы, функции; В чем отличие? Насколько я понимаю, "поля" - это и есть "переменные", а "методы" - это "функции"; Недавно преподаватель задал вопрос: "Какое у них различие?" Помогите разобраться, в чем же? подробнее

Показать сообщение отдельно
k_o_ten_ok
 Аватар для k_o_ten_ok
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 17
22.02.2014, 23:41     Определить указатель на поля класса (для любого типа полей) и указатель на функции класса
Помогите пожалуйста доделать код!
На основе класса , разработать класс , содержащий дополнительно к имеющимся полей и функций:
- Поле, которое имеет тип длинные целые числа ;
- Статическое поле такого же типа ;
- Статическое функцию, возвращает по ссылке значение статического поля.
2 . Изменить функцию выделения памяти для массива так , чтобы в ней , помимо имеющихся действий , происходило увеличение на единицу значение статического поля. Изменить функцию освобождения памяти , так чтобы в ней происходило уменьшение на единицу значение статического поля.
Остальные функции оставить без изменений для выполнения следующих работ .
3 . Определить указатель на поля класса (для любого типа полей) и указатель на функции класса , имеющие тип значения void и пустой список аргументов.
4 . Определить функцию main ( ) , в которой создать объект разработанного класса и указатель на объект . Указателю присвоить адрес объекта.
5 . Вызвать статическую функцию класса, не указывая объект , для которого она вызывается . Проконтролировать результат выполнения функции.
6 . Вызвать для созданного объекта функцию выделения памяти , затем вызвать для этого же объекта статическую функцию . Проконтролировать результат , сделать выводы.
7 . Присвоить указателю на поле класса адрес одного из полей , тип которого совпадает с типом указателя на поля. При возникновении ошибки компиляции изменить режим доступа к выбранному полю на открытый и повторить операцию. Сделать выводы.
8 . Присвоить указателю на функции класса адрес функции ввода данных в массив . Этой функции , используя указатель , для объекта класса.
9 . Присвоить указателю на функции класса адрес функции вывода данных из массива. Этой функции , используя указатель , для объекта класса.
10 . Повторить пп. 8 , 9 для указателя на объект .
11 . Повторить п. 8 для функции освобождения памяти.
12 . Вызвать для объекта статическую функцию . Проконтролировать результат , сделать выводы.
13 . Используя статическую функцией ссылки возвращаемого присвоить значение статического полю. Повторить п. 12 .
Вот код на основе которого нужно делать

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
 
using namespace std;
 
class LongArray
{
public:
 
    //создаем 
    void alloc() {
        cout << "vvedite razmer massiva=";
        cin >> count;
        m = new long[count];
    }
 
    //ввод 
    void in() {
        for (int i=0;i<count;i++)
        {
            cout << "vvedite m[" << i << "]=";
            cin >> m[i];
        }
    }
 
    //вывод 
    void out() {
        for (int i=0;i<count;i++)
            cout << "m[" << i << "]=" << m[i] << endl;
    }
 
    //установка определенного элемента
    void set() {
        int i;
        cout << "vvedite nomer elementa=";
        cin >> i;
        cout << "vvedite m[" << i << "]=";
        cin >> m[i];
    }
 
    //получение определенного элемента
    void get() {
        int i;
        cout << "vvedite nomer elementa=";
        cin >> i;
        cout << "m[" << i << "]=" << m[i] << endl;
    }
 
    //очистка 
    void free() {
        delete m;
    }
 
private:
    int count;
    long *m;
};
 
int main()
{
    
    LongArray *ln5;
    {
        LongArray ln;
        ln5 = &ln;
        ln.alloc();
        ln.in();
    }
    ln5->out();
 
    
    LongArray *ln6;
    {
        ln6 = new LongArray;
        ln6->alloc();
        ln6->in();
    }
    ln6->out();
 
    //автоматический объект
    LongArray ln;
    ln.alloc();
    ln.in();
    ln.out();
    ln.get();
    ln.free();
 
    //указатель на объект
    LongArray *lnd = &ln;
    lnd->alloc();
    lnd->in();
    lnd->out();
    lnd->get();
    lnd->free();
 
    //динамический объект
    LongArray *lndd = new LongArray;
    lndd->alloc();
    lndd->in();
    lndd->out();
    lndd->get();
    lndd->free();
 
    //массив объектов
    LongArray lns[3];
    for (int i=0;i<3;i++)
    {
        lns[i].alloc();
        lns[i].in();
        lns[i].out();
        lns[i].get();
        lns[i].free();
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru