Ответ на этот другой вопрос показывает Вам, как сделать это: JavaScript, эквивалентный из Python' s местные жители ()?
В основном, можно сказать
window["foo"](arg1, arg2);
или как многие другие предположили, можно просто использовать оценку:
eval(fname)(arg1, arg2);
, хотя это чрезвычайно небезопасно, если Вы не абсолютно уверены в том, что Вы - луг оценки.
Хотя это и не совсем то же самое, вы можете сделать это вместо:
class C;
C* c = 0;
, а затем позже, в файле реализации, после включения файлов заголовков для «A» и «B», определите «C» следующим образом:
class C : public B<A> {};
Использование наследования вместо typedef должно работать, если вам нужно использовать только конструктор по умолчанию для B .
Да, вам нужно. Обратите внимание, что все три строки выполняют разные функции. Первый объявляет класс. Второй объявляет шаблон, а третий объявляет имя typedef. При объявлении typedef-name вы можете использовать разработанный спецификатор типа, такой как «class A», чтобы назвать класс, не имея его имени в области видимости (с некоторыми неприятными ловушками), но вы не можете в дальнейшем свернуть объявление шаблона с объявлением typedef.
Я бы не стал беспокоиться о трех строках. Если нужно, я бы их просто выписал :)
Я не совсем понимаю ваш вопрос, но такой код:
template<class _T> class B;
недопустим. C ++ резервирует имена, начинающиеся с подчеркивания и заглавная буква для реализации компилятора и библиотеки - вам не разрешается использовать их в своем собственном коде.