The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"как задать класс с шаблонной функцией в качестве шаблонного ..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"как задать класс с шаблонной функцией в качестве шаблонного ..."
Сообщение от mitya Искать по авторуВ закладки on 08-Окт-03, 01:15  (MSK)
Я хочу передать в качестве шаблонного параметра класса класс у которого
есть шаблонная функция ,чтоб работал такой пример:

#include<iostream>
struct Policy
{
  template<typename F>
  static void DoSomething (F& obj){ std::cout<<obj; }
};

template<  template<class > class E>
class  MyClass:public
  {  
    /*...............*/
  };

int main()
{
  
  MyClass<Policy> my;
  float a=0;
  my.DoSomething("It's Works");
  
}
// этот пример не компилируется ,но если передать в качестве аргумента
шаблонный класс с шаблонной функцией то все работает
#include<iostream>
template<typename G=char>
struct Policy
{
  template<typename F>  /* добавился шаблонный параметр*/
  static void DoSomething (F& obj){ std::cout<<obj; }
};

template<  template<class > class E>
class  MyClass:public E<float> /*добавился шаблонный параметр */
  {  
    /*...............*/
  };

int main()
{
  
  MyClass<Policy> my;
  float a=0;
  my.DoSomething("It's Works");
  
}

Как сделать так чтоб Policy был просто классом с шаблонной функцией ???

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "неболшая опечатка "
Сообщение от mitya Искать по авторуВ закладки on 08-Окт-03, 01:22  (MSK)
Опечатка в первой программе

>class  MyClass:public
а должно быть :

class  MyClass:public E

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "неболшая опечатка "
Сообщение от sas emailИскать по авторуВ закладки on 08-Окт-03, 22:04  (MSK)
>Опечатка в первой программе
>
>>class  MyClass:public
>а должно быть :
>
>class  MyClass:public E

Did not get it...

#include <iostream>
#include <string>

class AAA {
std::string s_;

AAA( const AAA& aaa ) {}
void operator=( const AAA& aaa ) {}

public:
explicit AAA( const char *s ) : s_( s ) {}
friend std::ostream& operator << ( std::ostream& os, const AAA& a );
};

std::ostream& operator<<( std::ostream& os, const AAA& a )
{
return os << a.s_;
}

struct Policy
{
template<typename F>
static void DoSomething( const F& obj )
{
std::cout << obj << "\n";
}
};

template<class E>
class  MyClass : public E
{  
    /*...............*/
};

int main()
{
  
MyClass<Policy> my;
my.DoSomething( 234.567 );
AAA aaa( "aaa instance of the AAA" );
my.DoSomething( aaa );
}


??? So what is the problem

Thanks
--- sas

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру