小编Myk*_*hyn的帖子

如何检查模板类中的变量是否为字符串类型?

我已经为模板类编写了以下默认构造函数,它将这里的所有值都标记为 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)

c++ templates initialization g++ class

3
推荐指数
1
解决办法
161
查看次数

标签 统计

c++ ×1

class ×1

g++ ×1

initialization ×1

templates ×1