С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 15
1

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

13.06.2012, 19:44. Показов 1026. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Получилась вот такая странная проблема, хотя не понимаю почему в С++ возникают ошибки в таком случае

Код:

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;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2012, 19:44
Ответы с готовыми решениями:

Передача функции как параметр шаблона
Хочу передавать в шаблон любую функцию без параметров и вызывать ее из него. Как это сделать? ...

Параметр шаблона класса как собственный тип данных
Приветствую. Такой вопрос: как перегрузить операторы класса-шаблона, где в качестве аргумента...

Gtest, доступ к элементам базового класса-шаблона без указания параметров шаблона. баг или фича?
Всем привет. Продолжаю экспертизу gtest/gmock. Количество ошибок и багов зашкаливает. ...

Определение метода-шаблона за пределами шаблона класса
День добрый! Разбираюсь в шаблонах, решил копнуть поглубже. Вот пример: template &lt;typename T1&gt;...

0
13.06.2012, 19:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2012, 19:44
Помогаю со студенческими работами здесь

Передача класса в качестве параметра шаблона
Имеется два класса, один это однонаправленный итератор, другой это двунаправленный. Двунаправленный...

Свой тип как параметр шаблона
Есть вопрос по коду: #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;vector&gt; using namespace...

Шаблоннный клас как параметр шаблона
Если в кратце: Имеется такой код: typedef ByteStuffing&lt;USART0, CRC8&lt;USART0&gt; &gt; StreamDelimiter;...

Передать шаблонный класс, как параметр шаблона
нужно не используя stl написать аналог класса list. написал болванку и застрял template&lt;class C&gt;...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru