Вот мой код:Указанный параметр шаблона на конструктору
class test{
public:
template<int B>
test(const char(&a)[B]){
std::cout<<B<<std::endl;
}
};
int main(int argc, char** argv) {
test t("test");
return 0;
}
выход:
5
Я делал некоторые исследования и пришли на этот код. Он будет подсчитывать количество символов (-1 для точного). Я задаюсь вопросом о цели указанного int B
. внутри параметра шаблона, это сработает, если у меня есть что-то вроде:
class test{
public:
template<char B>
test(){
}
};
int main(int argc, char** argv) {
test t(); //error, how to make it work?
return 0;
}
Мои вопросы:
С первого примера, как же это точно подсчитать количество символов? Какова цель указания типа внутри конструктора шаблона, как из моего примера номер 2, как заставить его работать, если у меня есть тип char? (я получаю сообщение об ошибке при попытке скомпилировать)
Ааа я имею в виду, как захватить от чего-то, если это символ. Я не знаю, как его реализовать, поэтому у меня нет четкого примера. –
Если вы хотите любое «случайное» значение (значение, которое не имеет специального значения, которое вы не предоставили в вашем примере BTW), просто передайте его в качестве входной переменной. – Amit
Хм, ладно, я как-то понял суть. Поэтому, если он не имеет значения по умолчанию, такого как 'int B = 0', он должен что-то захватить. –