C++. How to define template parameter of type T for class A when class T needs a type A template parameter?
Posted
by
jaybny
on Stack Overflow
See other posts from Stack Overflow
or by jaybny
Published on 2012-12-19T22:28:00Z
Indexed on
2012/12/19
23:03 UTC
Read the original article
Hit count: 237
Executor class has template of type P and it takes a P object in constructor. Algo class has a template E and also has a static variable of type E. Processor class has template T and a collection of Ts.
Question how can I define Executor< Processor<Algo> >
and Algo<Executor>
? Is this possible? I see no way to defining this, its kind of an "infinite recursive template argument"
See code.
template <class T>
class Processor {
map<string,T> ts;
void Process(string str, int i)
{
ts[str].Do(i);
}
}
template <class P>
class Executor {
Proc &p;
Executor(P &p) : Proc(p) {}
void Foo(string str, int i) {
p.Process(str,i);
}
Execute(string str)
{
}
}
template <class E>
class Algo
{
static E e;
void Do(int i) {}
void Foo()
{
e.Execute("xxx");
}
}
main ()
{
typedef Processor<Algo> PALGO; // invalid
typedef Executor<PALGO> EPALGO;
typedef Algo<EPALGO> AEPALGO;
Executor<PALGO> executor(PALGO());
AEPALGO::E = executor;
}
© Stack Overflow or respective owner