#cpp #строки #шаблоны_с++
Число работает: templateclass Parent { }; class Child : public Parent<33> { }; Но как передать строку? template class Parent { }; class Child : public Parent<"ololo"> { };
Ответы
Ответ 1
Я вам сейчас один фокус покажу, только вы о нем никому не рассказывайте :) Потому как фокус построен чисто на, гм... особенностях Visual C++. В нем для строки (даже глобальной) просто ее передача - не сработает: templateclass Test { public: void out() { cout << text << endl; } }; const char * const text = "abcd"; int main(int argc, const char * argv[]) { Test t; t.out(); } Но если провернуть вот так, как показано ниже - то Visual C++ 2015 проглотит, не поморщившись: template class Test { public: void out() { cout << text << endl; } }; char * text = "abcd"; char& i = text[0]; int main(int argc, const char * argv[]) { Test<&i> t; t.out(); } Ответ 2
Нельзя использовать литеральную строку в шаблонах, так как не понятно, является ли она каждый раз разная, или той же самой. ПО этому придется создать переменную и использовать уже её: templateclass Parent { }; char text[] = "Ololo"; class Child : public Parent { };
Комментариев нет:
Отправить комментарий