Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

С++ как передать строку в шаблон?

#cpp #строки #шаблоны_с++


Число работает:

template 
class Parent {

};


class Child : public Parent<33> {

};


Но как передать строку?

template 
class Parent {

};


class Child : public Parent<"ololo"> {

};

    


Ответы

Ответ 1



Я вам сейчас один фокус покажу, только вы о нем никому не рассказывайте :) Потому как фокус построен чисто на, гм... особенностях Visual C++. В нем для строки (даже глобальной) просто ее передача - не сработает: template class 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



Нельзя использовать литеральную строку в шаблонах, так как не понятно, является ли она каждый раз разная, или той же самой. ПО этому придется создать переменную и использовать уже её: template class Parent { }; char text[] = "Ololo"; class Child : public Parent { };

Комментариев нет:

Отправить комментарий