Я хочу передать в качестве шаблонного параметра класса класс у которого
есть шаблонная функция ,чтоб работал такой пример:#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 был просто классом с шаблонной функцией ???
Опечатка в первой программе>class MyClass:public
а должно быть :class MyClass:public E
>Опечатка в первой программе
>
>>class MyClass:public
>а должно быть :
>
>class MyClass:public EDid 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 problemThanks
--- sas