URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2163
[ Назад ]

Исходное сообщение
"как задать класс с шаблонной функцией в качестве шаблонного параметра"

Отправлено mitya , 08-Окт-03 01:15 
Я хочу передать в качестве шаблонного параметра класса класс у которого
есть шаблонная функция ,чтоб работал такой пример:

#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 был просто классом с шаблонной функцией ???


Содержание

Сообщения в этом обсуждении
"неболшая опечатка "
Отправлено mitya , 08-Окт-03 01:22 
Опечатка в первой программе

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

class  MyClass:public E


"неболшая опечатка "
Отправлено sas , 08-Окт-03 22:04 
>Опечатка в первой программе
>
>>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