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

Указатель на функцию и параметры по умолчанию - C++

Восстановить пароль Регистрация
 
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
26.02.2013, 20:53     Указатель на функцию и параметры по умолчанию #1
Приветствую! Есть такая задача - мне нужно передавать в специальную функцию массив и указатель на функцию. Функции эти для сортировки, и имеют вид примерно такой:
C++
1
void s_sortname(char*, uint)
char* - массив
uint - число элементов массива.

В нужной функции я объявил такой указатель в качестве параметра

C++
1
void (*sort_fx)(char*, uint)
И вроде как всё работает, но есть проблема - у алгоритма quicksort функция имеет вид:

C++
1
void s_quicksort(char* str, uint high, uint low = 0)
Вот и возникла проблема, как передать эту функцию. Я надеялся, что компилятор учтёт параметр по умолчанию, но не вышло (ошибка типов).

Как решить проблему?

Код прилагается:

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
//Bubble, Selection, Insertion, QS, Shell
 
#include <iostream>
#include <time.h>
#include <string.h>
 
#define SP " "
 
using namespace std;
 
typedef unsigned int uint;
 
void odd_sort(char* str, uint num, void (*sort_fx)(char*, uint)) {
 
    (*sort_fx)(str, num);
 
}
 
void s_qsort(char * array, uint high, uint low = 0) {
 
    int i = low;                
    int j = high;
 
    int x = array[(low+high)/2];
 
    do {
 
        while(array[i] < x) ++i;
        while(array[j] > x) --j;
 
        if(i <= j) {           
            
            swap(array[i], array[j]);
            
            i++; j--;
 
        }
 
    } while(i < j);
 
    if(low < j)  s_qsort(array, low, j);
    if(i < high) s_qsort(array, i, high);
 
}
 
int main() {
 
    //===BASE_INITIALISATION===
 
    cout << "Hello! This program will sort all odd element in array\n";
 
    char   some_text[] = "aSbCfDg"; //Source text
    char * sort_text;       //Second d-string for sort tests
 
    int i = strlen(some_text);
 
    sort_text = new char[i];
    
    cout << "Original text (len: " << i << "):\n";
 
    cout << some_text << endl;
 
    //===SORT_TABLE===
 
    strcpy(sort_text, some_text);
 
 
 
    odd_sort(some_text, i, s_qsort);
 
    cout << sort_text;
 
    //===END===
 
    delete [] sort_text;
 
    system("pause");
 
    return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 20:53     Указатель на функцию и параметры по умолчанию
Посмотрите здесь:

Параметры функции по умолчанию C++
Параметры по умолчанию в С. C++
ODBC, параметры по умолчанию C++
Указатель на функцию с аргументами по умолчанию C++
C++ Параметры по умолчанию в функции
параметры шаблонов функции по умолчанию C++
Передать в неуправляемую функцию указатель на указатель C++
Оптимизация. Перегрузки vs параметры по умолчанию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
26.02.2013, 23:59     Указатель на функцию и параметры по умолчанию #2
C++
1
2
3
4
void ss_qsort(char * array, uint high)
{
    s_qsort(array, high, 0);
}
Yandex
Объявления
26.02.2013, 23:59     Указатель на функцию и параметры по умолчанию
Ответ Создать тему
Опции темы

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