我已经为模板类编写了以下默认构造函数,它将这里的所有值都标记为 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;
}
Run Code Online (Sandbox Code Playgroud)
在 中main,我是这样使用的:
vec<int> t1; // default constructor works perfectly
vec<string> s2; // ambiguous overload here (signing string to int)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
错误:“operator=”的重载不明确(操作数类型为“std::__cxx11::basic_string”和“int”)
编辑: 类头看起来像这样:
...
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] …Run Code Online (Sandbox Code Playgroud)