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

Как получить указатель на функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шифрование файлов и папок с установкой на них пароля http://www.cyberforum.ru/cpp-beginners/thread1241732.html
Привет. Мне нужно зашифровать файл/папку и поставить пароль на нее/него. Что посоветуете? Заранее спасибо. P.S. так как шифрование тема сложная, подумываю о XOR. Вопрос: как лучше хранить пароль, и как зашифровать всю папку, чтобы в итоге вышел один файл? Спасибо.
C++ Оцените тетрис Написано коряво, но это первый блин. Мне бы очень хотелось его дошлифовать до красивого внешнего и внутреннего содержания. Если участники форума мне в этом помогут, буду признателен. Test_Wi32.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "Test_Wi32.h" #define MAX_LOADSTRING 100 // Global Variables: http://www.cyberforum.ru/cpp-beginners/thread1241731.html
Проверить, имеют ли три введенных пользователем числа одинаковую четность C++
Проверить, имеют ли три введенных пользователем числа одинаковую четность #include<iostream.h> main() { int b,d,x; cout<<"enter b "; cin>>b; cout<<"enter d ";
Разобрать строку кода C++
Часть программы, если что // Game engine struct Piece { struct { unsigned short s; } shape; int x : 8, y : 8, color : 14; unsigned r : 2; template<typename T> // walkthrough operator
C++ Нахождение ближайших точек методом декомпозиции - не понятен алгоритм http://www.cyberforum.ru/cpp-beginners/thread1241640.html
Преподаватель задал решить задачу по нахождению ближайших точек методом декомпозиции, но мне не понятен алгоритм, гугл не дал мне необходимой информации, объясните пожалуйста.
C++ Ввести имя-фамилию в 1 колонке, з/п во 2 колонке, в третьей указать премию Добрый день,помогите решить задание есть 5 работников нужно ввести их имя-фамилию в 1 колонке и заработную плату во 2 колонке в третьей указать премию нужно чтобы програма расчитывала 1 колонка - общую заработную плату с премией каждого работника 2 колонка - высчитывает 15 процентов с каждой зп (Налог) 3 колонка - заработная плата с уже вычисленным налогом хэлп кто чем может,хотя... подробнее

Показать сообщение отдельно
Michall
 Аватар для Michall
1 / 1 / 0
Регистрация: 31.10.2008
Сообщений: 52
12.08.2014, 22:57  [ТС]     Как получить указатель на функцию
Круто, работает! Конечно, не совсем понял, как это работает.
Хотя, вроде, тут написано об этом, если не ошибаюсь (еще не читал): http://msdn.microsoft.com/ru-ru/library/bb385731.aspx

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
#include <windows.h>
#include <locale>  
#include <stdio.h>
#include <conio.h>    
using namespace std;
#include <iostream>
#include <iomanip>
#include <vector>
 
enum COLORS
{
    // Dark colors 
    BLACK,
    BLUE,
    GREEN,
    CYAN,
    RED,
    MAGENTA,
    BROWN,
    LIGHTGRAY,
    // Light colors
    DARKGRAY,
    LIGHTBLUE,
    LIGHTGREEN,
    LIGHTCYAN,
    LIGHTRED,
    LIGHTMAGENTA,
    YELLOW,
    WHITE
};
 
 
 
class Menu{
private:
    BYTE   m_Style;
    HANDLE m_hConsole;
 
    typedef void(Menu::*m_PrintStyle) (const int&, vector<string>);
    m_PrintStyle PrintStyle;
 
public:
    
    Menu() : m_Style(0)
    {
        //PrintStyle = nullptr;
        m_hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
        SetPointer(1);
        Open();
        
    };
    static void Info(){
        printf("Скомпилировано %s %s\n", __DATE__, __TIME__);
    }
 
 
    // В зависимости от выбора выбрать нужную функцию
    void  SetPointer(int choice){ 
        switch (choice){
        case 1:  PrintStyle = &Menu::PrintStyle1; break;
        case 2:  PrintStyle = &Menu::PrintStyle2; break;        
        case 3:  PrintStyle = &Menu::PrintStyle3; break;
        default:;
        }
    }
 
 
    void CaseLinePrint(const int& line, vector<string> a){
        (this->*PrintStyle)(line, a);
    }
 
 
 
    void CaseLineExecute(const int& line){
 
        printf("\n\n\n");
 
        switch (line) // выбор дейсвия в зависимости от введеного значения
        {
        case 0:
            SetPointer(1);
            break;
 
        case 1:
            SetPointer(2);
            break;
 
        case 2:
            SetPointer(3);
            break;
 
        case 3:
 
            break;
 
        case 4:
            Info();
            _getch();
            break;
 
        default:
            printf("\nОшибка!\n");
 
        }
    }
 
 
    void PrintStyle1(const int& line, vector<string> a){
        for (int i = 0; i < line; i++){
            cout << i + 1 << ". " << a[i] << endl;
        }
 
        SetConsoleTextAttribute(m_hConsole, WHITE << 4 | BLACK);
        cout << line + 1 << ". " << a[line] << setw(75 - a[line].length()) << "" << endl;
        SetConsoleTextAttribute(m_hConsole, BLACK << 4 | DARKGRAY);
 
        for (int i = line + 1; i < a.size(); i++){
            cout << i + 1 << ". " << a[i] << endl;
        }
    }
 
    void PrintStyle2(const int& line, vector<string> a){
        for (int i = 0; i < line; i++){
            cout << i + 1 << ". " << a[i] << endl;
        }
 
        SetConsoleTextAttribute(m_hConsole, RED << 4 | BLACK);
        cout << line + 1 << ". " << a[line] << setw(75 - a[line].length()) << "" << endl;
        SetConsoleTextAttribute(m_hConsole, BLACK << 4 | DARKGRAY);
 
        for (int i = line + 1; i < a.size(); i++){
            cout << i + 1 << ". " << a[i] << endl;
        }
    }
 
    void PrintStyle3(const int& line, vector<string> a){
        for (int i = 0; i < line; i++){
            cout << i + 1 << ". " << a[i] << endl;
        }
 
        SetConsoleTextAttribute(m_hConsole, WHITE << 4 | BLACK);
        cout << line + 1 << ". " << a[line] << endl;
        SetConsoleTextAttribute(m_hConsole, BLACK << 4 | DARKGRAY);
 
        for (int i = line + 1; i < a.size(); i++){
            cout << i + 1 << ". " << a[i] << endl;
        }
    }
 
    
    void Open(){
 
        vector<string> a = { "SetPointer(1);", "SetPointer(2);", "SetPointer(3);", "", "Информация" };
 
        int line(0);
 
        int ch;
        char act;
 
        CaseLinePrint(line, a);
 
        while (true)
        {
 
            act = _getch();
            ch = static_cast<int>(act);
            switch (ch)
            {
            case -32:           // Код блока стрелок
                continue;
                //break;
 
            case 27:            // Esc
                return;
                //break;
 
            case 72:            // Вверх
                line--;
                if (line == -1){
                    line = a.size() - 1;
                }
                break;
 
            case 80:            // Вниз
                line++;
                if (line == a.size()){
                    line = 0;
                }
                break;
 
            case 77:            // Вправо
                CaseLineExecute(line);
                break;
 
 
            default:
                printf("\nВы нажали неверную клавишу!\n");
            }
 
            system("cls");
            CaseLinePrint(line, a);
 
 
        } // конец цикла while(true)
 
    }
 
};
 
 
int main(){
    setlocale(LC_CTYPE, "Russian");
 
    //Menu::Info();
    Menu menu;
 
 
    return 0;
}
 
Текущее время: 22:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru