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

Пространства имен и перегрузка функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу,которая для любого натурального числа печатает количество цифр в записи этого числа http://www.cyberforum.ru/cpp-beginners/thread419707.html
Помагите решить такую штукенцию=) Составить программу,которая для любого натурального числа печатает количество цифр в записи этого числа.
C++ Нужен простой пример бинарного поиска Всем доброго времени суток. Кто может привести какой нибудь простенький пример бинарного поиска (будем считать что отсортированный массив уже есть)? http://www.cyberforum.ru/cpp-beginners/thread419679.html
Переменные C++
Помогите кто нибудь в коде объявить локальные переменные #include <conio.h> #include <iostream.h> #include <stdio.h> #include <fstream.h> int m,n,k,sum,q,prov,vb,vc,p; void razmer(int(&A), int &m, int &n) {
Пояснение к задаче объяснить каждое действие C++
Вот задача Объясните мне пожалуйста каждую строчку Программка оч классная но я не понимаю что там делается , если не сложно помогите пожалуйста #include <iostream> #include <cstdlib> #include <ctime> using namespace std; #define dimm_arr 9 // размер исходного массива
C++ Сколько раз среди заданных символов встречается символ "+" и сколько раз символ "*" http://www.cyberforum.ru/cpp-beginners/thread419656.html
Даны натуральное число n, символы S1, S2, ..., Sn. Подсчитать: сколько раз среди данных символов встречается символ "+" и сколько раз символ "*"
C++ Исправьте мне ошибки в коде Привет всем... посмотрите пожалуйста правильно я написал программу? Пример 1. #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main(int argc, char *argv) { double x, y, z; cin >> x; подробнее

Показать сообщение отдельно
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016

Пространства имен и перегрузка функций - C++

28.12.2011, 14:48. Просмотров 594. Ответов 3
Метки (Все метки)

описание:
есть библиотека. Пространство имен namespace1, в нем есть несколько перегруженных функций func().
C++
1
2
3
4
5
6
7
8
9
10
11
// header.h
#ifndef header_h
#define header_h
namespace namespace1
{
double func(double a, double b, double c);
double func(int a, double b, int c);
double func(double a, double b);
};
 
#endif
Задача такая:
нужно чтобы вместо определенной перегрузки вызывалась моя перегрузка, при этом моя перегрузка вызывает функцию, которую она хочет заменить.

я сделал следующее, например хотим заменить вторую функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef __HACK_H
#define __HACK_H
 
#include <header.h>
 
namespace hack
{
    double func(int a, double b, int c)
    {
        double result = namespace1::func(a, b, c);
        if (result < 30000)
            result *= 0.8;
 
        return result;
    }
}
 
#endif
затем в исходном header.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// header.h
#ifndef header_h
#define header_h
namespace namespace1
{
double func(double a, double b, double c);
double func(int a, double b, int c);
double func(double a, double b);
};
 
#include hack.h
namespace1
{
using hack::func;
};
#endif
я думал, что будет юзаться вторая функция, но ошибка такая:
Код
Error	1	error C2668: 'namespace1::func' : ambiguous call to overloaded function	
main.cpp	37
это при вызове этой функции из пользовательского кода.
не придумал пока как это решить, возможно есть подход отличный от моего, который реализуется без лишнего геморроя

есть какие-нибудь предложения?
можно конечно исправить исходники и заново пересобирать библиотеку, но не хотелось бы этого делать.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru