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

Массив указателей на функцию в классе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Аргумент функции - указатель на метод класса http://www.cyberforum.ru/cpp-beginners/thread1007262.html
Здравствуйте. Содержание задания - написать программу, создающую копию выбранного пользователем файла при помощи n-го кол-ва потоков (среда разработки "VS 2012"). Написание программы процедурным методом не вызвало ни каких трудностей. Но вот при написании её же при помощи классов... Суть вопроса в том, что при попытке передать метод класса в виде одного из аргументов в ф-цию CreateThread() -...
C++ Двумерный динамический массив. Все нечетные строки матрицы сдвинуть циклически на К элементов влево Помогите пожалуйста нужно нужно создать двумерный динамический массив и все нечетные строки матрицы сдвинуть циклически на К элементов влево. Я попыталась хотя бы просто их сдвинуть но у меня не получается не могли бы вы помочь ? #include <iostream> #include <stdlib.h> #include <conio.h> int **formMatr (int &n, int &m) { http://www.cyberforum.ru/cpp-beginners/thread1007257.html
Конструкторы C++
dynamic.h #pragma once #include <string.h> #include <iostream> #include <cstdlib> #include <clocale> #include <windows.h> #include <stdio.h> #include <conio.h>
Задача C++
#include <iostream> #include <math.h> #include <iomanip> using namespace std; float scor(int n, float x); int main() {
C++ printf("x\te^-x^2\n") http://www.cyberforum.ru/cpp-beginners/thread1007217.html
printf("x\te^-x^2\n"); если не сложно напишите по русски что тут выполняется
C++ Написать программу, упорядочивающую случайный массив чисел Дана неупорядоченная последовательность чисел a = {a0, a1, …, aN}. Отсортировать a методом обменной сортировки со слиянием Бэтчера. Помогите, пожалуйста, с кодом. Ума не приложу, как написать такую программу:-| подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт CЭксперт С++
6428 / 3626 / 450
Регистрация: 29.11.2010
Сообщений: 9,587
14.11.2013, 02:24     Массив указателей на функцию в классе
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
#include <iostream>
#include <clocale>
 
// базовый абстрактный класс
class Nothing
{
  public:
    Nothing() { setlocale(LC_ALL, ""); } // конструктор по-умолчанию
    virtual void print() const = 0;      // чисто виртуальная функция
    void doNothing() const {}            // обычная виртуальная функция
    virtual ~Nothing() {}                // виртуальный деструктор т.к.
                                         // предполагается наследование
};
 
// реализация чисто-виртуальной функции
// тут некоторые скажут оО , но оно таки существует
void Nothing::print() const
{
    std::cout << "It's nothing to do" << std::endl;
}
 
// класс-наследник от Nothing (Something является производным классом от Nothing)
// используется приватное наследование, что означает, что Something реализуется
// посредством Nothing.
// тут можно загнаться на тему философии, важно лишь помнить, что все поля
// (в т.ч. конструктор) базового класса будут иметь модфиикатор доступа private
class Something : private Nothing
{
  public:
    void print() const // определение чисто-виртуальной функции, класс более не 
    {                  // абстрактный
        doNothing();   // вызываем приватный метод просто чтобы показать, что мы
                       // так умеем
        std::cout << "С - Сережа и Петя (известно по условию)\n"
                 "Паскаль - Коля, Петя и Сережа (известно по условию)\n"
                 "Бэйсик - Коля\n"; // выводим очевидный ответ на неизвестную задачу
    }
    virtual ~Something() {}         // т.к. предполагается наследование от данного
                                    // класса, то делаем конструктор виртуальным
};
 
// наследование означает, что Just4Fun является Something. Я бы сказал, что он
// является что-то с чем-то. Модификаторы доступа для наследуемых членов
// базового класса не изменяются
class Just4Fun : public Something
{
  public:
    Just4Fun() : smth(new Something)     // инициализируем указатель на базовый 
    {                                    // класс новым динам. объектом Something
        pfS memf_ptr = &Just4Fun::print; // объявляем указатель типа pfS на метод
                                         // класса, который наследуется от Something
                                         // (т.к. благодаря тому, что функция print()
                                         // виртуальна в базовом классе, то
                                         // наследуется её интерфейс и реализация
                                         // по-умолчанию)
        (smth->*memf_ptr)();             // вызываем метод, на который указывает
                                         // наш новый указатель, передавая ему
                                         // в качестве аргументов void в круглых
                                         // скобках
    }
    ~Just4Fun()
    {
        delete smth;                     // освобождаем память под динамический
                                         // объект типа Something
    }
 
  private:
    typedef void (Something::*pfS)() const; // объявляем синоним на указатель на
                                            // константный метод Something,
                                            // возвращающий тип void
                                            // и не принимающий никаких аргументов
    Something* smth;                        // указатель на базовый класс
};
 
 
int main()
{
    // делаем это реальным
    Just4Fun makeItReal; // Говорят, тут происходит особая темная магия ]:>
}
Задача, которую решает данный код взята отсюда:
Три ученика и три языка. Определить кто на каком программирует.
 
Текущее время: 05:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru