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

C++

Войти
Регистрация
Восстановить пароль
 
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
#1

Templates and pointers to functions - C++

27.02.2011, 14:18. Просмотров 813. Ответов 5
Метки нет (Все метки)

в общем пишу одну процедурку для работы с текстовыми файлами, которая сама должна в вызывать функцию, переданную ей с определенными параметрами

судя по всем мануалам объявление функции должно выглядеть так:

C++
1
2
3
template <class T, class TString>
DecoderResult variableDC ( FILE *file, T* obj, 
        void(*proc)( sting, SSCValuesList<TString>* , T*) )
но g++ на это дело ругается:
DS.cpp:29: error: expected ‘,’ or ‘...’ before ‘(’ token

объявляю и описываю функцию воттак:
C++
1
2
3
4
5
6
7
8
template <class T, class TString>
DecoderResult variableDC ( FILE *file, T* obj, 
        void(*proc))
{
//........
proc(variable,values,obj);
//........
}
g++ перестает ругаться, что, по-моему, странно, ибо сомнительной должна быть 6я строчка.

в итоге в обих случаях g++ ругается на вызов самой функции:

C++
1
2
3
4
5
6
7
8
void testing(string variable, SSCValuesList<string>* values, int* a)
{
//......
}
//....
int* a;
variableDC<int*,string>(f,a,&testing);  
//....
вот таким образом:
DS.cpp:141: error: no matching function for call to ‘variableDC(FILE*&, int*&, void (*)(std::string, SSCValuesList<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >*, int*))’


в чем проблема? заранее спасибо))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 14:18     Templates and pointers to functions
Посмотрите здесь:

C++ C++: pointers, clases
C++ указатели (Pointers)
C++ Pointers
Boost C++ boost/shared_ptr (Smart Pointers)
Pointers and dynamic arrays C++
C++ Указатели (pointers) и их практический смысл?
Const, pointers, reference C++
Recursion and pointers. Array in reverse order C++
Passing member functions into templates C++
Sum of two very long integers, using pointers C++
Smart pointers + полиморфизм + делегирование. Ошибка компиляции C++
C++ Указатели (Pointers)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2011, 18:58     Templates and pointers to functions #2
Странно, что ругается на первый вариант вариант объявления, он правильный. Второй вариант, очевидно, неверный, вы не добиваетесь того, чего хотите, proc не будет являться указателем на функцию.
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
27.02.2011, 19:10     Templates and pointers to functions #3
-MefistofeL-, Если gcc 4.5+ можно попробовать использовать std::function<T>.
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
27.02.2011, 21:52  [ТС]     Templates and pointers to functions #4
silent_1991, судя по всему надо искать ошибку...
ибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
template <class T>
void hwcaller( T* a,void (*hw)(int,T*))
{
    hw(1,a);
}
 
void hw(int b,int* a)
{
    cout<<endl<<"Hello world"<<endl<<*a<<endl<<b<<endl;
}
 
int main()
{
    int* a;
    a=new int(2);
    hwcaller<int>(a,&hw);
    return 0;
}
работает как надо

ForEveR, спс, но хотелось бы все-таки реализовать это на низком уровне.

Добавлено через 1 минуту
ЗЫ одну нашел - в вызове функции вместо <int*,...> нужно <int,...> но не в этом вся соль(

Добавлено через 2 часа 9 минут
Все нашел! вместо string sting написал))) печально...
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2011, 22:17     Templates and pointers to functions #5
Вот по этой причине рекомендуется выкладывать код полностью. А то вдруг это ваш собственный класс sting. Я ещё обратил внимание на схожесть со string, но потом как раз про самописный класс подумал.
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
27.02.2011, 22:42  [ТС]     Templates and pointers to functions #6
ну... просто большинство народу ленится полностью код читать и забивают с ответом (по себе знаю), поэтому стараюсь кидать только частями, чтобы кто-нибудь да ответил, всеравно спасибо))
Yandex
Объявления
27.02.2011, 22:42     Templates and pointers to functions
Ответ Создать тему
Опции темы

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