c++ - 构造函数中的默认模板参数

标签 c++ constructor templates default parameters

所以我有这段代码,为了方便起见,我希望它的构造函数的默认参数是 int 类型和 0。(我的项目的一个类中有更多参数,其中一个是可选的,我不'想写两次构造函数,因为它很大)

class mama{
    public:
    template<typename x> mama(x i=int(0)){}
};

int main(){
    mama x;
}

这行不通,因为它说找不到构造函数,所以有没有其他方法可以做到这一点?

error: no matching function for call to ‘mama::mama()'
note: candidates are: mama::mama(const mama&)

最佳答案

请注意,函数模板不允许使用默认模板参数。为什么不创建一个类模板?

template <class T=int>
class mama{
    public:
    mama<T>(T i=0){}
};

int main(){
    mama<> x; // no argument based template parameter deduction possible
}

关于c++ - 构造函数中的默认模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/831952/

相关文章:

c++ - 如何从 8 个 boolean 值中创建一个字节(反之亦然)?

c++ - 自定义迭代器适用于 std::sort 但不适用于 tbb::parallel_sort?

C++ 初始化包含另一个对象设计问题的对象

kotlin - 扩展父参数的类默认值

django - Django : search_device_list() missing 1 required positional argument: 'id'

java - JNI——可以将复杂类型作为 native 方法参数传递吗?

c++ - 为数组的每个元素调用构造函数

templates - 使用 std::make_shared 拥有自己的 std::shared_ptr

c++ - 由基类型专门化的模板中的派生结构类型

c++ - 使用 C++ 连接到 mysql