Вот есть у меня класс. Даже два — Класс1 и Класс2. И оба используются в качестве параметров шаблона в ШаблонноКлассе. Вот же теперь вопрос — как можно сообщить Классу1 о Классе2, использующимся в конкретном ШаблонноКлассе?
Пример:
class Param_1;
class Param_2;
class Param_1 {
public:
static void foo() { /*вызов Template_class::Par2::goo()*/ }
};
class Param_2 {
public:
static void goo() { /* ... */ }
};
template <typename Par1, typename Par2>
class Template_class {
void boo() { Par1::foo(); }
};
Весь вечер ломал голову. Так и не придумал.
[UPD]: Вот только я написал этот пост, как пришла в голову мысль:
using namespace std;
class Param_1
{
public:
template <typename C>
static void foo() { typename C::Par2::boo(); }
static void boo() { cout << "Param_1::boo()" << endl; }
};
class Param_2
{
public:
template <typename C>
static void foo() { typename C::Par1::boo(); }
static void boo() { cout << "Param_2::boo()" << endl; }
};
template <typename P1, typename P2>
class templated_class
{
public:
typedef P1 Par1;
typedef P2 Par2;
void foo() {
Par1::foo<templated_class<Par1, Par2> >();
Par2::foo<templated_class<Par1, Par2> >();
}
};
/* in main(): */
templated_class<Param_1, Param_2> c;
c.foo();
getch();