Вперед объявляющий шаблонный указатель

Ответ на этот другой вопрос показывает Вам, как сделать это: JavaScript, эквивалентный из Python' s местные жители ()?

В основном, можно сказать

window["foo"](arg1, arg2);

или как многие другие предположили, можно просто использовать оценку:

eval(fname)(arg1, arg2);

, хотя это чрезвычайно небезопасно, если Вы не абсолютно уверены в том, что Вы - луг оценки.

6
задан Jonas Byström 23 August 2009 в 20:34
поделиться

3 ответа

Хотя это и не совсем то же самое, вы можете сделать это вместо:

class C;
C* c = 0;

, а затем позже, в файле реализации, после включения файлов заголовков для «A» и «B», определите «C» следующим образом:

class C : public B<A> {};

Использование наследования вместо typedef должно работать, если вам нужно использовать только конструктор по умолчанию для B .

8
ответ дан 9 December 2019 в 20:46
поделиться

Да, вам нужно. Обратите внимание, что все три строки выполняют разные функции. Первый объявляет класс. Второй объявляет шаблон, а третий объявляет имя typedef. При объявлении typedef-name вы можете использовать разработанный спецификатор типа, такой как «class A», чтобы назвать класс, не имея его имени в области видимости (с некоторыми неприятными ловушками), но вы не можете в дальнейшем свернуть объявление шаблона с объявлением typedef.

Я бы не стал беспокоиться о трех строках. Если нужно, я бы их просто выписал :)

3
ответ дан 9 December 2019 в 20:46
поделиться

Я не совсем понимаю ваш вопрос, но такой код:

template<class _T> class B;

недопустим. C ++ резервирует имена, начинающиеся с подчеркивания и заглавная буква для реализации компилятора и библиотеки - вам не разрешается использовать их в своем собственном коде.

1
ответ дан 9 December 2019 в 20:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: