Скажите, что у меня есть следующее:
template<typename TemplateItem>
class TestA
{
public:
TemplateItem Item;
void Function1(){;}
void Function2(){;}
void Function3(){;}
void Function4(){;}
//Etc etc number of functions is quite lengthy
};
template<typename TemplateItem>
class TestB : public TestA<TemplateItem>
{
public:
//How would I use the 'using' keyword to include everything from TestA
//Without manually declaring it for 20 or more functions/variables individually
};
Для тех из вас, кто не знаком с проблемами наследования классов шаблонов:
http://www.parashift.com/c++-faq-lite/templates.html#faq-35.19
Некоторые люди все еще думаютне существует такой проблемы наследования, несмотря на приведенную выше ссылку, утверждающую обратное, но цитируемую с данного сайта:
template<typename T>
class B {
public:
void f() { } ← member of class B<T>
};
template<typename T>
class D : public B<T> {
public:
void g()
{
f(); ← bad (even though some compilers erroneously (temporarily?) accept it)
}
};
Но есть проблема с поиском имен.
Чтобы уточнить:
Проблема наследования шаблона не проблема, это контекст (такЯ не получаю таких замечаний, как «но такой-то класс наследует»), проблема в , ключевое слово using можно применять только к отдельным функциям, что утомительно - я хочу применить его квесь класс TestA, не нужно писать 20+ с использованием ключевых слов (что все же более эффективно, чем добавление 50+ вызовов this-> esque, которые в любом случае, возможно, придется изменить).