Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получение ссылки на функцию из класса шаблона и пе 
:(
    Опции темы
accpro
Дата 13.6.2012, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.3.2011

Репутация: нет
Всего: нет



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

Код:


Код


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 в нужных местах, но это тоже не помогло

Помогите пожалуйста! 
PM MAIL   Вверх
accpro
Дата 13.6.2012, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.3.2011

Репутация: нет
Всего: нет



Нашел решение
нужно вместо Prop<_Type, Test<_Type>>::Pr<&Test<_Type>::GetVal> Prop; написать
typename Prop<_Type, Test<_Type>>::Pr<&Test<_Type>::GetVal> Prop;
PM MAIL   Вверх
SenkraD
Дата 14.6.2012, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: нет
Всего: 23



ну это даже не решение, а так оно и делается, так как без typename компилер считает, что ты там к переменной доступаешся


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1097 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.