Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
alkagolik
Заблокирован
#1

конфликт типов - C++

09.10.2011, 23:00. Просмотров 1630. Ответов 27
Метки нет (Все метки)

пишу себе Си хедер. как реализовать универсальность одной функции для всех типов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2011, 23:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос конфликт типов (C++):

Конфликт типов (int, double, bool) - C++
Есть простейший класс class A { public: A( long ) {} A( double ){} A( bool ) {} } и при создании обьекта new...

Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов. - C++
Буду благодарен! Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.

Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов - C++
Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов int или float и возвращают...

Конфликт имён - C++
Добрый день. При запуске программы возникает следующая ошибка: Сейчас изучаю книгу Страуструпа "Программирование. Принципы и...

Конфликт итераторов - C++
Доброго времени суток. Пишу Timsort с использованием шаблонов и итераторов. Написал класс CTimsort, в нем все необходимые методы и их...

Конфликт компиляторов - C++
Здравствуйте, я относительно недавно начал программировать, экспериментирую с созданием игр на движке HGE. У меня установлен Microsoft...

27
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
09.10.2011, 23:02 #2
Перегрузить функцию.
0
alkagolik
Заблокирован
09.10.2011, 23:04  [ТС] #3
например?
0
castaway
Эксперт С++
4919 / 3027 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
09.10.2011, 23:10 #4
Пардон. В Си перегрузки нет. Получается что никак.
0
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
10.10.2011, 00:42 #5
alkagolik, void*?
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.10.2011, 00:44 #6
или макросы
1
alkagolik
Заблокирован
10.10.2011, 01:17  [ТС] #7
void** работает! инициализируется и выводит и удаляется.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void **create_def(){
    int i, j;
    void **matrix;
 
    matrix = (void **) malloc (my_default_size * sizeof(void*));
    if ( !matrix) exit(__ERROR_CREATE_MEM);
 
    for(i = 0; i != my_default_size; ++i){
        matrix[i] = (void *) malloc(my_default_size * sizeof(void));
        if ( !matrix[i] ) exit(__ERROR_CREATE_MEM);
    }
    return matrix;
}
Цитата Сообщение от alex_x_x Посмотреть сообщение
или макросы
пример можно?

нет. с удалением я тупнул, забыл комментарии снять. не хочет функция в качестве аргумента принимать не void
0
easybudda
Модератор
Эксперт CЭксперт С++
9718 / 5669 / 972
Регистрация: 25.07.2009
Сообщений: 10,915
10.10.2011, 01:28 #8
alkagolik, не понял точно, что именно Вы пытаетесь сделать, но посмотрите на стандартные функции такие, как qsort()/calloc()/etc... Стандартная практика передавать типом void* указатель на данные, размер одного элемента и количество элементов...
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.10.2011, 01:29 #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define _ADD(type) \
type add_ ## type (const type a, const type b) \
{ \
  return ((a) + (b)); \
}
 
#define ADD(type, a, b) (add_ ## type(a, b))
 
_ADD(int);
_ADD(double)
 
int main()
{
   return ADD(int, 1, -1);
}
Добавлено через 52 секунды
чтото вроде, время позднее, ничего умнее в голову не приходит
0
alkagolik
Заблокирован
10.10.2011, 02:15  [ТС] #10
easybudda, а есть вообще где глянуть сорцы сишных функций? realloc(), qsort()...
вот к примеру realloc() может принимать первым параметром любой тип. я же пишу функцию вида
C
1
void func(void **arg1, const size_t arg2)
и компилятор ругается что ему вместо void** подсунули char**
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.10.2011, 02:26 #11
Цитата Сообщение от alkagolik Посмотреть сообщение
вместо void** подсунули char**
похоже, что компилируется плюсовым компилятором
0
alkagolik
Заблокирован
10.10.2011, 02:31  [ТС] #12
Цитата Сообщение от alex_x_x Посмотреть сообщение
похоже, что компилируется плюсовым компилятором
gcc + консоль
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.10.2011, 02:37 #13
пардон за глупый вопрос, а расширение файла .c?
0
alkagolik
Заблокирован
10.10.2011, 02:42  [ТС] #14
alex_x_x, именно
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
10.10.2011, 02:58 #15
неявно приводить char** к void** нельзя
в самом по себе void** смысла то нет большого
0
10.10.2011, 02:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 02:58
Привет! Вот еще темы с ответами:

Конфликт конструкторов. - C++
Здравствуйте! struct DateTime : tm { DateTime(int year_ = 1970, int month_ = 1, int day_ = 1,...

конфликт имен - C++
пытаюсь вызвать CButton* button= (CButton*)GetDlgItem(IDC_BUTTON); // пишет что определено в WinUser.h пишет error C2660:...

Конфликт пространств имён - C++
Есть у меня два разных класса, имеющими одно название. И есть другие две библиотеки, использующие эти классы (каждая свой). Я...

Конфликт имен в библиотеках - C++
Здравствуйте. Возникла проблема при одновременном подключении #include <X11/extensions/xf86vmode.h> и #include "FreeImage.h" Код...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.