Для моей домашней работы нам нужно создать шаблонную структуру с различными переменными и функциями.Вот его сокращенная версия:
template <class Type>
struct vekt{
Type *array;
int len_of_array;
int move(vekt<Type>* second, Type start){ ... }
}
Как работает перемещение функции: она проверяет, может ли она переместить первый элемент массива (array [0]) вызывающего vekt во второй vekt,и если это возможно, это так.Вы можете переместить первый элемент вызывающего вектора, если вы можете получить этот элемент как сумму различных элементов из второго -> массива.Тип start является нейтральным элементом для добавления этого типа.
Так, например, для Type = int, если вызывающий vekt имеет это в массиве: [4,5,6], а vekt second имеет это: [3,7,1], функция move вернет 1, потому что первый элемент массива [4,5,6] равен 4, и вы можете получить его, добавив 3 и 1 из массива [3,7,1].Я сделал эту функцию, и она работает.
Это моя проблема: я должен перегрузить эту функцию для Type = char, потому что разные компиляторы видят ее как unsigned или char со знаком.Я понимаю, что я должен сделать, но я не понимаю , как сделать это.Я не знаю, как записать перегрузку в структуру.Могу ли я сделать это, а затем просто написать код, специфичный для char, в первом движении функции?:
template <class Type>
struct vekt{
Type *array;
int len_of_array;
int move(vekt<char>* second, char start){ ... }
int move(vekt<Type>* second, Type start){ ... }
}
Если нет, то что именно я должен делать?Мой английский не самый лучший, но я надеюсь, что мои объяснения понятны