Я написал следующий конструктор по умолчанию для шаблонного класса, который подписывает все значения здесь на 0. Единственная идея, которую я имею, состоит в том, чтобы проверить, является ли typename T
строковым типом, а затем действовать с ним как со строкой.
vec(const size_t size_ = 0): _size(size_), values(_size? new T[_size]:0){
for(size_t i = 0; i < _size; i++)
values[i] = 0;
}
В main
я использую это следующим образом:
vec<int> t1; // default constructor works perfectly
vec<string> s2; // ambiguous overload here (signing string to int)
Но я получаю следующую ошибку:
ошибка: неоднозначная перегрузка для ' operator = '(типы операндов:' std :: __cxx11 :: basic_string 'и' int ')
EDIT: Заголовок класса выглядит следующим образом:
...
template<typename T>class vec{
private:
size_t _size;
T * values;
public:
vec(const size_t size_ = 0): _size(size_), values(_size? new T[_size]:0){
for(size_t i = 0; i < _size; i++)
values[i] = 0;
}
...