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

получение ссылки на функцию из класса шаблона и передача ее как параметр шаблона - C++

Восстановить пароль Регистрация
 
pror0ck
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15
13.06.2012, 19:44     получение ссылки на функцию из класса шаблона и передача ее как параметр шаблона #1
Доброго времени суток!
Получилась вот такая странная проблема, хотя не понимаю почему в С++ возникают ошибки в таком случае

Код:

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
template <class _Type, class _Owner>
class Prop
{
public:
 
    template <const _Type &(_Owner::*_Get)()>
    class Pr
    {
    public:
 
        Pr(_Owner *obj)
        {
            m_Object = obj;
        }
 
        operator int()
        {
            return (m_Object->*_Get)();
        }
 
    protected:
 
        _Owner *m_Object;
    };
};
 
 
template <class _Type>
class Test
{
protected:
 
    _Type m_Val;
 
    const _Type &SetVal(const _Type &val)
    {
        return (m_Val = val);
    }
 
    const _Type &GetVal()
    {
        return m_Val;
    }
 
public:
 
    Prop<_Type, Test<_Type>>::Pr<&Test<_Type>::GetVal> Prop;
    
    Test()
        : Prop(this)
    {
        
    }
};
 
 
int main( int argc, const char* argv[] )
{
    Test<int> test;
 
 
}
Выдает ошибки примерно такие
Ошибка 4 error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "Prop"
Ошибка 5 error C2208: Prop: нет членов, определенных с помощью этого типа

И такой странный warning
Предупреждение 3 warning C4346: Prop<_Type,Test<_Type>>::Pr<&Test<_ Type>::GetVal>: зависимое имя не является типом

Хотя я пробовал ставить typename в нужных местах, но это тоже не помогло

Помогите пожалуйста!

Добавлено через 29 минут
Нашел решение
нужно вместо Prop<_Type, Test<_Type>>::Pr<&Test<_Type>::GetVal> Prop; написать
typename Prop<_Type, Test<_Type>>::Pr<&Test<_Type>::GetVal> Prop;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 19:44     получение ссылки на функцию из класса шаблона и передача ее как параметр шаблона
Посмотрите здесь:

передать шаблонный класс как параметр шаблона C++
Зачем нужен шаблон как параметр шаблона? C++
C++ Кортеж с абстрактным типом как параметр шаблона + smart_ptr
Как ограничить параметр типа шаблона только числовыми типами данных? C++
Указатель на статический массив как параметр шаблона C++
C++ Определение метода-шаблона за пределами шаблона класса
Быстрее ли вывов функции, переданной через параметр шаблона, чем через простой указатель на функцию? C++
Передача класса в качестве параметра шаблона C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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